Python默认参数值和名称空间

时间:2018-09-02 21:42:46

标签: python

我对Python的默认参数值及其与名称空间的关系有疑问。

我阅读了Python教程中关于Default Argument Values的部分,并试图理解该示例:

def f(a, L=[]):
    L.append(a)
    return L

print(f(1)) 
print(f(2))
print(f(3))

我把这个例子放到了pythontutor.com中,似乎奇怪的是参数L位于远离全局和局部名称空间的中间。

在此question中,它被称为“隐藏位置”。

  

...进行一次评估,然后将其产生的对象存储在隐藏的位置,如果在调用时未提供该参数的值,则将其重新使用。每次调用时,参数仍然会重置为默认值。

我认为“隐藏位置”是指功能对象属性__defaults____kwdefaults__

将这个隐藏位置(这些属性)称为“名称空间”,一种生活在外部且独立于本地全局内置名称空间层次结构的“名称空间”,是否正确?

如果我想了解Python中名称是如何映射到对象的,那么以下正确吗?

  • Python中的名称属于由内置名称空间,全局名称空间,本地名称空间组成的层次结构,或者属于与具有默认参数的功能对象相关联的单独的隐藏名称空间。

0 个答案:

没有答案