我不明白这个单一的下划线意味着什么.这是一个神奇的变量吗?我无法在locals()和globals()中看到它.
>>> 'abc'
'abc'
>>> len(_)
3
>>>
Run Code Online (Sandbox Code Playgroud)
Mar*_*off 52
在标准Python REPL中,_表示最后返回的值 - 在您调用的位置len(_),_是值'abc'.
例如:
>>> 10
10
>>> _
10
>>> _ + 5
15
>>> _ + 5
20
Run Code Online (Sandbox Code Playgroud)
这是通过处理sys.displayhook,以及_可变进的builtins事情就像命名空间int和sum,这就是为什么你不能在找到它globals().
请注意,Python 脚本中没有此类功能.在脚本中,_没有特殊含义,也不会自动设置为前一个语句生成的值.
另外,_如果你想像上面那样使用它,请注意重新分配REPL!
>>> _ = "underscore"
>>> 10
10
>>> _ + 5
Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
_ + 5
TypeError: cannot concatenate 'str' and 'int' objects
Run Code Online (Sandbox Code Playgroud)
这将创建一个全局变量,用于隐藏_内置函数中的变量.要撤消赋值(并_从全局变量中删除),您必须:
>>> del _
Run Code Online (Sandbox Code Playgroud)
然后功能将恢复正常(builtins._将再次可见).
u0b*_*6ae 18
为什么你看不到它?它在__builtins__
>>> __builtins__._ is _
True
Run Code Online (Sandbox Code Playgroud)
所以它不是全球性的,也不是本地的.1
这项任务在哪里发生?sys.displayhook:
>>> import sys
>>> help(sys.displayhook)
Help on built-in function displayhook in module sys:
displayhook(...)
displayhook(object) -> None
Print an object to sys.stdout and also save it in __builtin__.
Run Code Online (Sandbox Code Playgroud)
1 2012编辑:我称之为"超全球",因为其__builtin__成员随处可见,任何模块.
| 归档时间: |
|
| 查看次数: |
4999 次 |
| 最近记录: |