Pregunté por SO y reproduzco aquí. Un cuaderno con dos celdas:
En 1]
import numpy as np
import matplotlib.pyplot as plt
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all";
En 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);
no suprime la salida de plt.hist()
:
Salida de 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)]'}
Ha configurado InteractiveShell.ast_node_interactivity = "all";
, por lo que ha configurado todos los nodos para que tengan una interactividad habilitada.
Y ;
funciona solo para la última expresión de nivel superior , axes[idx].hist(data[k], bins=20);
no es un nivel superior, ya que está anidado en for
, el último nodo de nivel superior es for
, que es una declaración.
Simplemente agregue una última declaración de no operación y termínela con ;
%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;
Y no tendrás ninguna salida.
@Carreau ¡ Gracias por la aclaración!
No pude encontrar sobre:
Y ; funciona solo para la última expresión de nivel superior
¿Eso está documentado en alguna parte? ¿Le gustaría copiar y pegar su respuesta en SO, para que pueda aceptarla?
¿Eso está documentado en alguna parte?
Probablemente no, la opción ast_interactivity
se usa con tan poca frecuencia que realmente no nos molestamos con la distinción, ya que los casos de uso _la mayoría_ son solo para la última expresión.
¿Le gustaría copiar y pegar su respuesta para que pueda aceptarla?
Ya lo hice, con un par de detalles más :-)
Comentario más útil
Ha configurado
InteractiveShell.ast_node_interactivity = "all";
, por lo que ha configurado todos los nodos para que tengan una interactividad habilitada.Y
;
funciona solo para la última expresión de nivel superior ,axes[idx].hist(data[k], bins=20);
no es un nivel superior, ya que está anidado enfor
, el último nodo de nivel superior esfor
, que es una declaración.Simplemente agregue una última declaración de no operación y termínela con
;
Y no tendrás ninguna salida.