python变量名解析总结

news/2024/10/27 19:26:08/

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.X='function' object has no attribute 'X'
C1.m.X=type object 'C1' has no attribute 'm'
'''

1.3.2 模块外访问变量

>>> import os
>>> os.chdir(r'E:\documents\F盘')
>>> import vars
>>> X = 96
>>> print(X)
96
>>> print(vars.X)
91
>>> vars.f1()
91
>>> vars.f2()
92
>>> print(vars.C1.X)
93
>>> c = vars.C1()
>>> print(c.X)
93
>>> c.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()()
9555
>>> def n2():S = 9555def n21():nonlocal Sprint(S)S = 9666print(S)return n21>>> n2()()
9555
9666

http://www.ppmy.cn/news/1225906.html

相关文章

gRPC之SAN证书生成

1、SAN证书生成 SAN(Subject Alternative Name)是 SSL 标准 x509 中定义的一个扩展。使用了 SAN 字段的 SSL 证书,可以扩 展此证书支持的域名,使得一个证书可以支持多个不同域名的解析。接下来我们重新利用配置文件生成CA证书, 再利用ca相…

2.2 调用星火大模型的API

调用星火大模型的API 1 申请API调用权限:2 调用原生星火 API3 统一API调用方式 项目仓库地址:https://github.com/datawhalechina/llm-universe 讯飞星火认知大模型,由科大讯飞于2023年5月推出的中文大模型,也是国内大模型的代表…

【JavaSE】基础笔记 - 图书管理系统(保姆教程,含源码)

目录 1、图书管理系统介绍 2、大致框架 3、代码实现步骤 3.1、Book图书类 3.2、BookList书架类 3.3、User用户类、AdminUser类、NormalUser类 3.4、IOperation操作接口 3.5、继承IOperation接口的操作类 3.6、完善User类 3.7、Mian类 4、完整代码 Java的三大特性是…

多模态大一统:开启全模态LLM和通用AI时代的大门

多模态大一统:开启全模态LLM和通用AI时代的大门 1. 目前多模态实现的方法1.1 单独训练各领域模型1.2 多任务学习1.3 集成多模态模型1.4 通用多模态模型2. 多模态统一难点2.1 数据集对齐和融合2.2 大规模计算资源需求2.3 各领域特性的兼容性2.4 可解释性和泛化能力3. 全模态的好…

基于卷积神经网络的猫种类的识别

1.介绍 图像分类是计算机视觉中的一个关键任务,而猫种类识别作为一个有趣且实用的应用场景,通过卷积神经网络(CNN)的模型能够识别猫的不同品种。在这篇博客中,将详细介绍如何利用深度学习技术构建模型,从而…

Pytorch torch.dot、torch.mv、torch.mm、torch.norm的用法详解

torch.dot的用法: 使用numpy求点积,对于二维的且一个二维的维数为1 torch.mv的用法: torch.mm的用法 torch.norm 名词解释:L2范数也就是向量的模,L1范数就是各个元素的绝对值之和例如:

springMVC学习笔记-请求映射,参数绑定,响应,restful,响应状态码,springMVC拦截器

目录 概述 springMVC做了什么 springMVC与struts2区别 springMVC整个流程是一个单向闭环 springMVC具体的处理流程 springMVC的组成部分 请求映射 RequestMapping 用法 属性 1.value 2.method GET方式和POST方式 概述 HTTP给GET和POST做了哪些规定 GET方式&…

Jetson TX2 Ubuntu18.04安装ROS

1. 配置软件源 2. 使用aptitude解决依赖问题 3.一些报错 主要参考一下两个教程: https://zhuanlan.zhihu.com/p/372481181 https://blog.csdn.net/weixin_45266691/article/details/117427775 2. 安装完aptitude后,使用一下指令进行安装 sudo apti…