Я спросил на ТАК и воспроизведу здесь. Блокнот с двумя ячейками:
В 1]
import numpy as np
import matplotlib.pyplot as plt
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all";
В [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);
не подавляет вывод plt.hist()
:
Вывод из 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)]'}
Вы установили InteractiveShell.ast_node_interactivity = "all";
, поэтому вы установили для всех узлов активную интерактивность.
И ;
работает только для последнего выражения верхнего уровня , axes[idx].hist(data[k], bins=20);
не является верхним уровнем, поскольку он вложен в for
, последний узел верхнего уровня - это for
, что является утверждением.
Просто добавьте последний оператор без операции и завершите его ;
%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;
И у вас не будет никаких выходов.
@Carreau Спасибо за разъяснения!
Я не смог найти примерно:
А также ; работает только для последнего выражения верхнего уровня
Это где-то задокументировано? Вы хотите скопировать и вставить свой ответ в SO, чтобы я мог его принять?
Это где-то задокументировано?
Вероятно, нет, опция ast_interactivity
используется настолько редко, что мы не особо беспокоимся о различиях, поскольку _most_ варианты использования используются только для последнего выражения.
Вы хотите скопировать и вставить свой ответ так, чтобы я мог его принять?
Уже сделал, но еще кое-что :-)
Самый полезный комментарий
Вы установили
InteractiveShell.ast_node_interactivity = "all";
, поэтому вы установили для всех узлов активную интерактивность.И
;
работает только для последнего выражения верхнего уровня ,axes[idx].hist(data[k], bins=20);
не является верхним уровнем, поскольку он вложен вfor
, последний узел верхнего уровня - этоfor
, что является утверждением.Просто добавьте последний оператор без операции и завершите его
;
И у вас не будет никаких выходов.