全局名称 'a' 是否与模块在同一个命名空间中?
Is the global name 'a' in the same namespace as the module?
import math
a = 1
def my_func():
print('don\'t downvote')
my_func()
我认为函数调用 my_func( ) 位于为函数 my_func( )[ 创建的本地名称空间中=18=] - 准备更正。名称 a 是否包含在为 math 模块创建的同一个全局命名空间中?
没有。假设您的文件名为 foo.py
。导入模块时,会为 foo
创建一个新的全局命名空间,它包含(除其他外)三个名称:
math
,指的是math
模块`
my_func
,指的是你的函数
a
,指1
调用函数的位置并不重要。如果 my_func
包含任何自由变量,它们将 总是 引用 foo
的全局命名空间,而不是调用它的命名空间。
math
模块有自己的全局命名空间。 ("Global" 确实不是一个好词;每个模块都有自己的模块级命名空间。)
Python 中唯一的 "global" 命名空间是内置命名空间,可从所有模块访问。
import math
a = 1
def my_func():
print('don\'t downvote')
my_func()
我认为函数调用 my_func( ) 位于为函数 my_func( )[ 创建的本地名称空间中=18=] - 准备更正。名称 a 是否包含在为 math 模块创建的同一个全局命名空间中?
没有。假设您的文件名为 foo.py
。导入模块时,会为 foo
创建一个新的全局命名空间,它包含(除其他外)三个名称:
math
,指的是math
模块`my_func
,指的是你的函数a
,指1
调用函数的位置并不重要。如果 my_func
包含任何自由变量,它们将 总是 引用 foo
的全局命名空间,而不是调用它的命名空间。
math
模块有自己的全局命名空间。 ("Global" 确实不是一个好词;每个模块都有自己的模块级命名空间。)
Python 中唯一的 "global" 命名空间是内置命名空间,可从所有模块访问。