Saya bertanya pada SO dan mereproduksi di sini. Notebook dengan dua sel:
Dalam [1]
import numpy as np
import matplotlib.pyplot as plt
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all";
Dalam [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);
tidak menekan output dari plt.hist()
:
Keluaran dari 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)]'}
Anda telah menyetel InteractiveShell.ast_node_interactivity = "all";
, jadi Anda telah menyetel semua node agar interaktivitas ast diaktifkan.
Dan ;
hanya berfungsi untuk ekspresi tingkat atas terakhir, axes[idx].hist(data[k], bins=20);
bukan tingkat atas, karena bersarang di for
, simpul tingkat atas terakhir adalah for
, yang merupakan pernyataan.
Cukup tambahkan pernyataan larangan operasi terakhir, dan akhiri dengan ;
%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;
Dan Anda tidak akan memiliki output apa pun.
@Carreau Terima kasih atas klarifikasinya!
Saya tidak dapat menemukan tentang:
Dan ; hanya berfungsi untuk ekspresi tingkat atas terakhir
Apakah itu didokumentasikan di suatu tempat? Apakah Anda ingin menyalin-menempelkan jawaban Anda di SO, sehingga saya dapat menerimanya?
Apakah itu didokumentasikan di suatu tempat?
Mungkin tidak, opsi ast_interactivity
sangat jarang digunakan sehingga kami tidak terlalu mempermasalahkan perbedaannya karena _most_ use case hanya untuk ekspresi terakhir.
Apakah Anda ingin menyalin-menempelkan jawaban Anda sehingga saya dapat menerimanya?
Sudah, dengan beberapa detail lainnya :-)
Komentar yang paling membantu
Anda telah menyetel
InteractiveShell.ast_node_interactivity = "all";
, jadi Anda telah menyetel semua node agar interaktivitas ast diaktifkan.Dan
;
hanya berfungsi untuk ekspresi tingkat atas terakhir,axes[idx].hist(data[k], bins=20);
bukan tingkat atas, karena bersarang difor
, simpul tingkat atas terakhir adalahfor
, yang merupakan pernyataan.Cukup tambahkan pernyataan larangan operasi terakhir, dan akhiri dengan
;
Dan Anda tidak akan memiliki output apa pun.