Ich habe auf SO gefragt und hier reproduziert. Ein Notebook mit zwei Zellen:
In 1]
import numpy as np
import matplotlib.pyplot as plt
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all";
In 2]
%matplotlib inline
data ={'first':np.random.rand(100),
'second':np.random.rand(100)}
fig, axes = plt.subplots(2)
for idx, k in enumerate(data):
axes[idx].hist(data[k], bins=20);
unterdrückt nicht die Ausgabe von plt.hist()
:
Ausgabe von Python -c "import IPython; print(IPython.sys_info())"
{'commit_hash': 'd86648c5d',
'commit_source': 'installation',
'default_encoding': 'UTF-8',
'ipython_path': '/Users/okomarov/anaconda/lib/python3.6/site-packages/IPython',
'ipython_version': '6.1.0',
'os_name': 'posix',
'platform': 'Darwin-16.7.0-x86_64-i386-64bit',
'sys_executable': '/Users/okomarov/anaconda/bin/python3',
'sys_platform': 'darwin',
'sys_version': '3.6.2 |Anaconda custom (x86_64)| (default, Jul 20 2017, '
'13:14:59) \n'
'[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)]'}
Sie haben InteractiveShell.ast_node_interactivity = "all";
, also haben Sie alle Knoten so eingestellt, dass die erste Interaktivität aktiviert ist.
Und ;
funktioniert nur für den letzten Top-Level- Ausdruck, axes[idx].hist(data[k], bins=20);
ist kein Top-Level, da es in for
verschachtelt ist, der letzte Top-Level-Knoten ist for
, was eine Aussage ist.
Fügen Sie einfach eine letzte No-Op-Anweisung hinzu und beenden Sie sie mit ;
%matplotlib inline
data ={'first':np.random.rand(100),
'second':np.random.rand(100)};
fig, axes = plt.subplots(2);
for idx, k in enumerate(data):
axes[idx].hist(data[k], bins=20)
pass;
Und Sie haben keine Ausgänge.
@Carreau Danke für die Klarstellung!
Ich konnte nichts finden über:
Und ; funktioniert nur für den letzten Top-Level-Ausdruck
Ist das irgendwo dokumentiert? Möchten Sie Ihre Antwort in SO kopieren und einfügen, damit ich sie akzeptieren kann?
Ist das irgendwo dokumentiert?
Wahrscheinlich nicht, die Option ast_interactivity
wird so selten verwendet, dass wir uns nicht wirklich mit der Unterscheidung beschäftigen, da _most_ Anwendungsfälle nur für den letzten Ausdruck gelten.
Möchten Sie Ihre Antwort kopieren und einfügen, damit ich sie akzeptieren kann?
Schon getan, mit ein paar anderen Details :-)
Hilfreichster Kommentar
Sie haben
InteractiveShell.ast_node_interactivity = "all";
, also haben Sie alle Knoten so eingestellt, dass die erste Interaktivität aktiviert ist.Und
;
funktioniert nur für den letzten Top-Level- Ausdruck,axes[idx].hist(data[k], bins=20);
ist kein Top-Level, da es infor
verschachtelt ist, der letzte Top-Level-Knoten istfor
, was eine Aussage ist.Fügen Sie einfach eine letzte No-Op-Anweisung hinzu und beenden Sie sie mit
;
Und Sie haben keine Ausgänge.