您的位置:首页 > 编程语言 > Python开发

Python 命名空间 及变量搜索规则 属性名称 属性名称 无点号运算的变量名

2014-12-13 18:55 686 查看

无点号运算的变量名与作用域相对应

点号的属性名使用的是对象的命名空间

有些作用域会对对象的命名空间进行初始化(模块和类)

简单变量名:如果赋值就不是全局变量

无点号的简单变量名遵循函数的LEGB作用域法则 具体如下啊:

赋值语句(X=value):是变量名称为本地变量,在当前作用域内,创建或改变变量名X,除非声明它是全局变量
引用(x):在当前作用域内搜索变量名X,之后是在任何以及所有的嵌套的函数中,然后是在当前的全局作用域中搜索,最后在内置作用域中搜索

属性名称:对象命名空间

点号的属性名指的是特定对象的属性,并且遵循模块和类的规则。就类和实例对象而言,引用规则增加了继承搜索这个流程:

赋值语句(object.X=value):在进行点号运算的对象的命名空间内创建或修改属性名X,并没有其他作用。继承树的搜索只发生在属性引用时,而不是属性的赋值运算时
引用(object.x):就基于类的对象而言,会在对象内搜索属性名X,然后是其上所有可读取的类(使用继承搜索流程-从下到上,从左至右),对于不是基于类的对象而言,例如模块,则是从对象中直接读取X



Python命名空间的禅:赋值将变量名分类



继续:



执行后的运行结果:11,11,22,11,33,55,33

导入



执行后的运行结果:66,11,11,22,33,33,55
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: