在Python3中,对于一个函数
函数不是的局部范围中定义的变量是否可以是函数对象的属性?
相反,函数的函数对象不的属性是否可以是函数本地范围内的变量
同样,对于一个模块:
模块的全局范围中定义的变量必须是模块模块对象的属性吗?
相反,模块的模块对象的属性是否可以作为模块全局范围内的变量?
感谢。
答案 0 :(得分:2)
局部变量和函数属性是完全独立的。函数的每次调用都会创建一个带有新的独立局部变量的新范围,但函数只有一个属性命名空间。
可以将本地命名与功能属性相同,但它们仍然是不同的模块的全局变量名称空间是__dict__
。除非属性由描述符处理,否则所有module-globals都是模块对象的属性,反之亦然。例如,模块的__class__
属性不是全局属性,因为__class__
由描述符处理。