如果从IPython笔记本调用它,我希望我的函数做一件事,如果从控制台或库代码调用它,我想要另一件事.特别是我正在制作一个具有以下所需行为的进度条:
Notebook:立即返回一个小部件
控制台:阻止和转储信息sys.stdout
是否有一个标志,我可以检查以确定用户是否从笔记本电脑或其他方式调用我的功能?
您无法检测到前端是具有完美精度的笔记本,因为IPython内核可以具有一个或多个具有不同功能的不同Jupyter前端(终端控制台,qtconsole,笔记本等).但是,您可以确定它是内核而不是普通终端IPython:
import sys def is_kernel(): if 'IPython' not in sys.modules: # IPython hasn't been imported, definitely not return False from IPython import get_ipython # check for `kernel` attribute on the IPython instance return getattr(get_ipython(), 'kernel', None) is not None
由于笔记本电脑比其他前端产品更受欢迎,这表明前端可能是笔记本电脑,但并非最终确定.因此,您需要确保有更多原始前端的出路.