Ian*_*anS 5 python ipython jupyter-notebook
编辑:该问题已在GitHub中报告。我将问题留在这里,以防它可以帮助其他人找到问题(我无法找到)。
在使用 Jupyter 笔记本时,为了方便起见,我经常使用该_变量(它返回最新代码执行的输出)。但是,当_用作未使用变量的占位符(Python 中的典型用例)时,它会破坏第一个用例。
请注意,这在 IPython 控制台中按预期工作。下面,_再次保存在循环中用作未使用占位符后的最新返回值。
In [1]: 'value'
Out[1]: 'value'
In [2]: _
Out[2]: 'value'
In [3]: for _ in range(2):
...: print('hello')
...:
hello
hello
In [4]: _
Out[4]: 1
In [5]: 'value'
Out[5]: 'value'
In [6]: _
Out[6]: 'value'
Run Code Online (Sandbox Code Playgroud)
但是,在 Jupyter Notebook 中运行相同的代码后,无论最新的输出是什么,_都将永远保留(循环中的最后一个值)。1如果我尝试这样做del _,那么_将不再是可访问的变量。
简而言之,_Python 中该变量的两种用法在 Jupyter Notebook 中发生冲突,但在 IPython 控制台中则不然。这只是一个不便,但我很想知道如何解决它 - 或者为什么会这样。
编辑:
$ python --version
Python 3.6.3 :: Anaconda, Inc.
$ ipython --version
6.5.0
$ jupyter notebook --version
5.6.0
Run Code Online (Sandbox Code Playgroud)
另一种方法如下:
import builtins
del builtins._
del _
del __
del ___
Run Code Online (Sandbox Code Playgroud)
只需忽略任何可能的错误即可。特别是,如果您得到NameError: name '_' is not defined,则必须继续删除__等。
执行此操作后,它将继续从后续单元格开始工作(即此方法无助于获取前一个单元格Out[n])
说明:在另一个答案引用的代码片段中(来源),
_该代码检查, __,的值___(注意range(1, 4)不包括4!因此分配____是无用的)是否未定义或与最后 3 个Out[n]:值相同的对象。_因此,如果、__和全部___未定义,则从下一个单元格开始,输出将分配给_。重要的是,如果其中任何一项不正确,它将无法工作。
这del builtins._是必要的,因为否则如果用户或某个图书馆之前做了类似的事情
import gettext
gettext.NullTranslations().install()
Run Code Online (Sandbox Code Playgroud)
然后builtins._就会被覆盖,需要删除。
| 归档时间: |
|
| 查看次数: |
3003 次 |
| 最近记录: |