我对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中名称是如何映射到对象的,那么以下正确吗?