编辑: 这个问题已经在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'
然而,在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
print="fo"
, 您将无法再打印任何东西。>>> print(a) Traceback (most recent call last): File "", line 1, in
TypeError: 'str' object is not callable
>>>```
此时您可以使用双下划线作为一个丢弃变量。例如:`for __ in range(2):`
- Bendik Knapstad