Python3全球的你
Python3 global dir
在 python3.6 shell dir
中输入时会产生以下结果:
>>> dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__']
__builtins__
生成所有内置的 python 方法,例如 those described here,而 __name__
将(总是?)为 __main__
。其他的呢:在 python 解释器中有 (1) 时,那些曾经填充过的那些;或 (2) 运行 一个脚本:如果是,什么时候?
这是来自 运行 一个名为 temp.py
的 python 脚本的示例:
if __name__ == '__main__':
print (dir())
print ("__annotations__: %s" % __annotations__)
print ("__builtins__: %s" % __builtins__)
print ("__cached__: %s" % __cached__)
print ("__doc__: %s" % __doc__)
print ("__file__: %s" % __file__)
print ("__name__: %s" % __name__)
print ("__package__: %s" % __package__)
print ("__spec__: %s" % __spec__)
运行它:
$ python temp.py
['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__']
__annotations__: {}
__builtins__: <module 'builtins' (built-in)> # <== always populated
__cached__: None
__doc__: None
__file__: temp.py # <== populated if running from a file/script
__name__: __main__ # <== populated (always with main?)
__package__: None
How/when 有 __annotation__
、__cached__
、__doc__
、__package__
人口? __name__
从来没有 __main__
吗?
__name__
在 运行 的脚本中只有 __main__
。它包含访问它的模块的完全限定名称:
>>> __name__
'__main__'
>>> from logging import config
>>> config.__name__
'logging.config'
__cached__
和 __package__
是 Import-related module attributes。
__doc__
保存当前模块或函数的文档字符串。
__annotations__
持有 annotations 个全局变量。
在 python3.6 shell dir
中输入时会产生以下结果:
>>> dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__']
__builtins__
生成所有内置的 python 方法,例如 those described here,而 __name__
将(总是?)为 __main__
。其他的呢:在 python 解释器中有 (1) 时,那些曾经填充过的那些;或 (2) 运行 一个脚本:如果是,什么时候?
这是来自 运行 一个名为 temp.py
的 python 脚本的示例:
if __name__ == '__main__':
print (dir())
print ("__annotations__: %s" % __annotations__)
print ("__builtins__: %s" % __builtins__)
print ("__cached__: %s" % __cached__)
print ("__doc__: %s" % __doc__)
print ("__file__: %s" % __file__)
print ("__name__: %s" % __name__)
print ("__package__: %s" % __package__)
print ("__spec__: %s" % __spec__)
运行它:
$ python temp.py
['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__']
__annotations__: {}
__builtins__: <module 'builtins' (built-in)> # <== always populated
__cached__: None
__doc__: None
__file__: temp.py # <== populated if running from a file/script
__name__: __main__ # <== populated (always with main?)
__package__: None
How/when 有 __annotation__
、__cached__
、__doc__
、__package__
人口? __name__
从来没有 __main__
吗?
__name__
在 运行 的脚本中只有 __main__
。它包含访问它的模块的完全限定名称:
>>> __name__
'__main__'
>>> from logging import config
>>> config.__name__
'logging.config'
__cached__
和 __package__
是 Import-related module attributes。
__doc__
保存当前模块或函数的文档字符串。
__annotations__
持有 annotations 个全局变量。