网站内容规划流程,无极网站网站涉案多少人被抓,wordpress知名主题,主机屋建网站源码1 python变量名解析总结
点号和无点号变量名#xff0c;用不同的处理方式。
#xff08;1#xff09; 无点号的变量名#xff0c;比如X#xff0c;使用的是作用域。
#xff08;2#xff09; 有点号的变量名#xff0c;比如obj.X#xff0c;使用对象的命名空间。
…1 python变量名解析总结
点号和无点号变量名用不同的处理方式。
1 无点号的变量名比如X使用的是作用域。
2 有点号的变量名比如obj.X使用对象的命名空间。
3 模块和类对对象的命名空间进行初始化。
1.1 无点号变量名
无点号变量名遵循LEGB作用域规则。
1.1.1 赋值本地变量
X value
赋值语句使变量名成为本地变量。
1.1.2 引用变量
引用变量X时根据LEGB作用规则搜索变量X当前本地作用域搜索之后在嵌套的函数中搜索然后在全局作用域搜索最后在内置作用域搜索。
1.2 点号变量名
点号的变量名是特定对象的属性。
1.2.1 命名空间赋值
obj.X value
在进行点号运算的对象obj的命名空间内创建或修改属性名X。
1.2.2 引用点号变量
obj.X
类先在对象内搜索变量名X然后在可读取的超类上使用继承搜索变量名X。
模块直接从模块读取X。
1.3 python变量名分类
python变量赋值位置决定了变量的作用域或命名空间即变量可访问范围。
NO赋值位置分类描述1模块顶层赋值全局变量都可访问2函数内部赋值本地变量函数内部可访问3方法内部赋值本地变量方法内部可访问4类主体内赋值类数据属性类、实例和行为可访问5方法self赋值实例属性实例可访问
1.3.1 模块内访问变量
# vars.py
# 模块属性
X 91def f1():print(X)def f2():# 函数本地变量X 92print(X)class C1(object):# 类属性X 93def m1(self):# 方法本地变量X 94# 实例属性self.X 95if __name__ __main__:print(X) # 91f1() # 91f2() # 92print(X) # 91c C1()print(c.X) # 93c.m1()print(c.X) # 95print(C1.X) # 93try:# 函数外不可访问本地变量print(f2.X)except Exception as e:print(f2.X{}.format(e))try:# 方法外不可访问本地变量print(C1.m.X)except Exception as e:print(C1.m.X{}.format(e)) 运行结果
E:\documents\F盘python vars.py
91
91
92
91
93
95
93
f2.Xfunction object has no attribute X
C1.m.Xtype object C1 has no attribute m1.3.2 模块外访问变量 import osos.chdir(rE:\documents\F盘)import varsX 96print(X)
96print(vars.X)
91vars.f1()
91vars.f2()
92print(vars.C1.X)
93c vars.C1()print(c.X)
93c.m1()print(c.X)
95
1.3.3 global和nonlocal变量
python的global语句用于def函数内定义全局变量。在函数外也可以引用此变量。
python中如果要修改嵌套作用域变量的值就用nonlocal语句。 S 梯阅线条def g1():print(S) def g2():global SS tyxt g1()
梯阅线条g2()print(S)
tyxt def n1():S 9555def n11():print(S)return n11 n1()()
9555def n2():S 9555def n21():nonlocal Sprint(S)S 9666print(S)return n21 n2()()
9555
9666