函数/模块范围内的变量和函数/模块对象的属性

时间:2017-10-04 19:18:31

标签: python python-3.x

在Python3中,对于一个函数

  • 函数不是的局部范围中定义的变量是否可以是函数对象的属性?

  • 相反,函数的函数对象的属性是否可以是函数本地范围内的变量

同样,对于一个模块:

  • 模块的全局范围中定义的变量必须是模块模块对象的属性吗?

  • 相反,模块的模块对象的属性是否可以作为模块全局范围内的变量?

感谢。

1 个答案:

答案 0 :(得分:2)

局部变量和函数属性是完全独立的。函数的每次调用都会创建一个带有新的独立局部变量的新范围,但函数只有一个属性命名空间。

可以将本地命名与功能属性相同,但它们仍然是不同的

模块的全局变量名称空间是__dict__。除非属性由描述符处理,否则所有module-globals都是模块对象的属性,反之亦然。例如,模块的__class__属性不是全局属性,因为__class__由描述符处理。