我是新来的Python和我在读取分配的问题:4种Python命名空间?
“的名字四种类型的命名空间在Python”
我从Java/C的背景和未来的我了解它的名称空间与范围有关吗?
我认为两种名称空间的类型是全局的和本地的?
我是新来的Python和我在读取分配的问题:4种Python命名空间?
“的名字四种类型的命名空间在Python”
我从Java/C的背景和未来的我了解它的名称空间与范围有关吗?
我认为两种名称空间的类型是全局的和本地的?
最里面的范围,这是第一次搜索,包含本地名
中所有的封闭功能,这是搜索开始与最近的封闭范围的范围,包含非本地的,也有非全局名称
下一个到最后一个范围包含当前模块的全局名称
最外层的范围(最后搜索)是一个包含内置名字
从An Introduction to Python by Guido van Rossum and Fred L. Drake, Jr.命名空间:
命名空间是从名称到对象的映射。 命名空间的例子有:内置名称的集合(像abs()这样的函数,如 ,以及内置的异常名称);在模块中的名称global; 和本地名称在函数调用。从某种意义上说,集合 对象的属性也形成一个名称空间。 (我的强调)
所以有四个命名空间。在Python3(但不是Python2)中,列表解析也是have their own namespaces。在这两个Python2和Python3生成器表达式有自己的命名空间,你可以从下面的代码引起的NameError
看到:
In [175]: (1 for i in range(1))
Out[175]: <generator object <genexpr> at 0x3a47d0f4>
In [176]: i
NameError: name 'i' is not defined
顺便说一句,涉及到一个范围,而不是一回事一个名字空间。而命名空间是名称和对象之间的映射,
作用域是Python程序的文本区域,其中一个命名空间是 直接访问。此处的“直接访问”表示对名称的非限定引用尝试在 名称空间中查找名称。 (我的重点)
我猜他们是指本地,全球,模块和包...?不只是给你答案,但这应该让你开始继续你的研究。 –
是的!我相信这是我需要的。谢谢! – user3629549