当前位置: 首页 > news >正文

python变量名解析总结

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

相关文章:

python变量名解析总结

1 python变量名解析总结 点号和无点号变量名,用不同的处理方式。 (1) 无点号的变量名,比如X,使用的是作用域。 (2) 有点号的变量名,比如obj.X,使用对象的命名空间。 …...

端口号大揭秘:网络世界的“门牌号”有多牛?

大家好,今天我们来聊一聊网络中的端口号。如果你以为端口号只是冷冰冰的数字,那你就大错特错了。端口号,这些看似枯燥的数字背后,隐藏着一个个生动的故事。 目录 大家好,今天我们来聊一聊网络中的端口号。如果你以为端…...

vue解除数据双向绑定

let obj JSON.parse(JSON.stringify(data));例如,table列表中,点击编辑时,可对val进行如上操作来解除双向绑定...

组件插槽,生命周期,轮播图组件的封装,自定义指令的封装等详解以及axios的卖座案例

3.组件插槽 3-1组件插槽 注意 插槽内容可以访问到父组件的数据作用域,因为插槽内容本身就是在父组件模版中定义的 插槽内容无法访问子组件的数据.vue模版中的表达式只能访问其定义时所处的作用域,这和JavaScript的词法作用域是一致的,换言之: 父组件模版的表达式只能访问父组…...

小美的树上染色

美团2024届秋招笔试第一场编程真题 先提一个小知识:题目中凡是提到树结构都要使用图的存储方式,只有二叉树例外。 分析:在树结构中,孩子和父节点是相邻节点,而父节点可能有多个孩子节点。在染色的过程中,…...

1.rk3588的yolov5运行:pt_onnx_rknn转换及rknn在rk3588系统python运行

自己有点笨,查资料查了一周才完美的实现了yolov5在rk3588环境下的运行,在这里写具体步骤希望大家少走弯路。具体步骤如下: 一、yolov5的原代码下载及pt文件转换为onnx文件 1.yolov5的原代码下载及环境搭建 在这里一定要下载正确版本的源代码…...

适用于全部安卓手机的 5 大免费 Android 数据恢复

您是否面临这样一种情况,即在Android设备上丢失了一些重要文件,但不知道应该选择哪种Android数据恢复来取回它们? 如果您以前从未备份过Android数据,则很难解决问题。 本文将介绍排名前5位的免费Android数据恢复软件。 您可以获…...

【案例分享】BenchmarkSQL 5.0 压测 openGauss 5.0.0

一、前言 本次BenchmarkSQL 压测openGauss仅作为学习使用压测工具测试tpcc为目的,并不代表数据库性能如本次压测所得数据。实际生产性能压测,还需结合服务器软硬件配置、数据库性能参数调优、BenchmarkSQL 配置文件参数相结合,是一个复杂的过…...

Linux之 4 种休眠模式

目录 1. Linux之 4 种休眠模式 1. Linux之 4 种休眠模式 # echo standby >/sys/power/state //CPU和RAM在运行 # echo mem > /sys/power/state //挂起到内存(待机),关闭硬 盘、外设等设备 # echo disk > /sys/power/state //挂起到硬盘(休眠),关闭硬盘、外设等设备&…...

homeassiant主题

下载主题 https://github.com/maartenpaauw/home-assistant-community-themes.git 使用file editor到homeassiant路径下,新建文件夹themes文件夹,用terminal新建也可以。 使用file editor上传文件 使用Terminal解压 mkdir themes unzip home-assistan…...

《2020年最新面经》—字节跳动Java社招面试题

文章目录 前言:一面:01、Java基础知识答疑,简单概述一下?02、倒排索引了解吗?使用Java语言怎么实现倒排?03、详细讲解一下redis里面的哈希表,常用的Redis哈希表命名有哪些,举例说明其…...

2.3IP详解及配置

2.3IP详解及配置 一、ip地址组成 IP地址由4部分数字组成,每部分数字对应于8位二进制数字,各部分之间用小数点分开 这是点分 2进制 如果换算为10进制我们称为点分10进制. 每个ip地址由两部分组成网络地址(NetID)和主z机地址(HostID).网络地址表示其属于…...

Python程序打包指南:手把手教你一步步完成

最近感兴趣想将开发的项目转成Package,研究了一下相关文章,并且自己跑通了,走了一下弯路,这里记录一下如何打包一个简单的Python项目,展示如何添加必要的文件和结构来创建包,如何构建包,以及如何…...

Linux yum 使用时提示 获取 GPG 密钥失败Couldn‘t open file RPM-GPG-KEY-EPEL-7

资料 错误提示: no crontab for root - using an empty one 888 原因剖析: 第一次使用crontab -e 命令时会让我们选择编辑器,很多人会不小心选择默认的nano(不好用),或则提示no crontab for root - usin…...

OpenGL_Learn13(材质)

1. 材质 cube.vs #version 330 core layout (location 0) in vec3 aPos; layout (location 0 ) in vec3 aNormal;out vec3 FragPos; out vec3 Normal;uniform mat4 model; uniform mat4 view; uniform mat4 projection;void main() {FragPosvec3(model*vec4(aPos,1.0));Norma…...

buildadmin+tp8表格操作(1)----表头上方添加按钮和自定义按钮

buildAdmin 的表头上添加一些按钮&#xff0c;并实现功能 添加按钮 <template><!-- buttons 属性定义了 TableHeader 本身支持的顶部按钮&#xff0c;仅需传递按钮名即可 --><!-- 这里的框架自带的 顶部按钮 分别有 刷新 &#xff0c; 添加&#xff0c; 编辑&…...

MySQL 定时计划任务 事件的使用

目录 查看事件是否开启 开启事件 1&#xff09;通过设置全局参数修改 2&#xff09;更改配置文件 MySQL如何创建并执行事件&#xff1f; 例 1 MySQL查看事件状态信息 MySQL修改和删除事件 例 1 例 2 删除事件 例 3 在数据库管理中&#xff0c;经常要周期性的执行某…...

C++构造函数 拷贝构造函数 括号法显示法隐式转换法实现类

一.无参构造 & 有参构造 & 拷贝构造函数 拷贝的是自己所属的类&#xff0c;也就是克隆自己。 所以传参要穿自己的类名。 克隆归克隆&#xff0c;但是不能把本身给改了&#xff0c;所以参数前要加const。class Person { public:int age;public:Person(){cout<<&q…...

FreeRTOS中的内存分配策略

FreeRTOS为内存管理提供了几种不同的策略&#xff0c;分别由heap_1.c至heap_5.c实现。以下是每种策略&#xff1a; heap_1.c: 最简单的策略。只允许一次性的内存分配。不允许内存释放。对于只分配内存但不释放的系统特别有用&#xff0c;如仅在启动时分配任务和队列的系统。内存…...

HP惠普光影精灵7笔记本Victus by HP 16.1英寸游戏本16-d0000原装出厂Windows11.21H2预装OEM系统

下载链接&#xff1a;https://pan.baidu.com/s/1LGNeQR1AF1XBJb5kfZca5w?pwdhwk6 提取码&#xff1a;hwk6 可适用的型号&#xff1a; 16-d0111tx&#xff0c;16-d0112tx&#xff0c;16-d0125tx&#xff0c;16-d0127tx&#xff0c;16-d0128tx&#xff0c;16-d0129tx&#…...

Polars 2.0清洗架构解密(含完整数据流拓扑图):为什么92%的团队还在用Pandas硬扛TB级脏数据?

第一章&#xff1a;Polars 2.0清洗架构解密&#xff1a;从设计哲学到性能跃迁Polars 2.0 的清洗架构并非简单功能叠加&#xff0c;而是以“零拷贝流式处理”与“惰性执行图优化”为双核驱动的范式重构。其设计哲学根植于两个核心信条&#xff1a;数据不应在内存中被无谓复制&am…...

OpCore-Simplify:让黑苹果配置从复杂到简单的智能化革命

OpCore-Simplify&#xff1a;让黑苹果配置从复杂到简单的智能化革命 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 你是否曾为黑苹果&#xff08;Hac…...

深度学习项目训练环境多场景落地:中小企业AI研发团队低成本GPU训练环境方案

深度学习项目训练环境多场景落地&#xff1a;中小企业AI研发团队低成本GPU训练环境方案 1. 环境准备与快速上手 对于中小企业的AI研发团队来说&#xff0c;搭建一个稳定可靠的深度学习训练环境往往是个头疼的问题。硬件成本高、环境配置复杂、依赖库冲突等问题经常让团队望而…...

Keepalived+Nginx+Tomcat 高可用项目集成 MySQL 数据库全记录

前言在之前的文章中&#xff0c;我搭建了基于 KeepalivedNginxTomcat 的高可用 Web 架构&#xff0c;实现了入口 VIP 漂移和反向代理。但这套架构还缺少“数据层”——所有服务都是无状态的&#xff0c;不能持久化数据。为了让项目更完整&#xff0c;我决定加入 MySQL 数据库&a…...

DIFY vs LangChain:零代码与全代码AI开发框架实战对比(附真实案例)

DIFY vs LangChain&#xff1a;零代码与全代码AI开发框架实战对比&#xff08;附真实案例&#xff09; 当企业或开发者希望将大语言模型&#xff08;LLM&#xff09;能力整合到业务中时&#xff0c;选择适合的开发框架至关重要。DIFY和LangChain代表了两种截然不同的技术路线&a…...

【极限压测】从99.9%全红到5%安全线!2026最新横评5款硬核降AI工具

说真的&#xff0c;作为在知乎摸爬滚打好几年的博主&#xff0c;我太理解大家临近交稿时的那种绝望了。眼看着论文初稿要交&#xff0c;结果降ai检测一出来&#xff0c;竟然是红彤彤的99%&#xff1f;&#xff01;那一刻&#xff0c;我感觉脑袋真的“嗡”的一声。好不容易熬夜码…...

Tailscale打洞失败太慢?手把手教你用Docker部署derper自建中转,告别国际绕行

Tailscale网络优化实战&#xff1a;用Docker自建derper中转节点提升连接速度 Tailscale作为现代零配置组网工具&#xff0c;其基于WireGuard协议的P2P直连特性确实令人惊艳——直到你发现两台设备之间的打洞成功率只有60%&#xff0c;而剩余40%的流量不得不绕行官方位于海外的中…...

GitHub Trending 每日精选 - 2026-03-27

GitHub Trending 每日精选 - 2026-03-27 &#x1f4c8; 今日概览 今天是 2026-03-27&#xff0c;GitHub Trending 榜单上有哪些值得关注的开源项目&#xff1f;注&#xff1a;此博客为自动化生成&#xff0c;系统会在每日运行时获取最新 Trending 数据并填充具体项目信息。&…...

Pixel Fashion Atelier实操手册:批量生成时利用CSV导入多组Enchantment参数

Pixel Fashion Atelier实操手册&#xff1a;批量生成时利用CSV导入多组Enchantment参数 1. 引言&#xff1a;为什么需要批量生成功能 在时尚设计领域&#xff0c;设计师经常需要快速生成多个不同风格的服装设计方案。传统方式需要逐个输入参数、等待生成、再调整参数&#xf…...

如何突破分子观察瓶颈?PyMOL开源版的3大核心优势

如何突破分子观察瓶颈&#xff1f;PyMOL开源版的3大核心优势 【免费下载链接】pymol-open-source Open-source foundation of the user-sponsored PyMOL molecular visualization system. 项目地址: https://gitcode.com/gh_mirrors/py/pymol-open-source PyMOL开源版作…...