确定我们是否在 IPython 笔记本会话中

Determine if we're in an IPython notebook session

我希望我的函数在从 IPython 笔记本调用时做一件事,在从控制台或库代码调用时做另一件事。特别是我正在制作一个具有以下所需行为的进度条:

有什么地方可以检查以确定用户是从笔记本还是其他地方调用我的函数的标志吗?

您无法检测到前端 是一个非常精确的笔记本,因为 IPython 内核可以有一个或多个具有不同功能的不同 Jupyter 前端(终端控制台、qtconsole、notebook 等)。但是,您可以确定它是内核而不是普通终端 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

由于笔记本比其他前端更受欢迎,这表明前端可能是笔记本,但不是决定性的。所以你想确保更原始的前端有出路。