ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Python变量本质、命名规则与常量写法(破除新手认知误区)

Python变量本质、命名规则与常量写法(破除新手认知误区)

博客摘要

90%新手都误解了Python变量:变量不是装数据的盒子,只是贴在内存上的标签。本文从内存底层拆解变量赋值逻辑,区分硬性命名红线与PEP8规范,补齐Python无原生常量的替代写法,覆盖面试高频考点。


一、变量底层本质:引用标签而非容器

C/Java中变量是预先开辟的内存容器,赋值是往容器里放数据;但Python采用引用语义,所有数据都是内存中的独立对象,变量只是指向对象的内存地址标签。执行代码a = 18完整流程:

  1. CPython解释器在堆内存开辟空间,创建整型对象18,分配唯一内存地址0x7001

  2. 在栈内存创建变量名a,存储0x7001地址,完成绑定

  3. 执行a = 20:不会修改原18的内存数据,而是新建对象20,让a标签解绑旧地址、绑定新地址

配套验证代码:通过id()查看内存地址,直观验证解绑逻辑

a = 18 print(id(a)) # 输出原有地址 a = 20 print(id(a)) # 地址彻底改变,原18等待垃圾回收

延伸知识点:Python小整数池。-5~256之间的整数会常驻内存,全局复用地址,避免重复开辟内存,属于解释器底层优化。


二、变量命名:强制语法规则(报错红线)+PEP8规范(团队红线)

1、语法强制规则(违反直接程序报错)

  • 组成字符:仅支持大小写字母、数字、下划线,禁止!@#等特殊符号

  • 开头限制:不能以数字开头,1name非法,name1合法

  • 关键字禁用:不能使用if、def、class、return等35个Python内置保留字,可通过import keyword;print(keyword.kwlist)查询全部关键字

  • 大小写敏感:Age和age是两个完全独立变量,内存地址互不干扰

2、PEP8行业规范(不报错但代码不合格)

  • 普通变量、函数:蛇形命名 user_age、student_list,禁止驼峰

  • 禁止单字母无意义命名:除循环i/j/k外,拒绝a、b这类无法读懂的变量

  • 不使用中文变量:Python3语法支持中文变量,但跨系统、低版本解释器会乱码,生产环境禁用


三、Python常量:无原生常量,两套生产级写法

和Java final不同,Python语法层面没有不可修改的常量关键字,只能通过约定+工具实现只读:

  1. 约定式常量(新手首选):全大写蛇形命名,如MAX_PAGE = 100,团队约定不修改该变量,仅靠人为约束

  2. 强制只读常量(生产环境):使用标准库types中的NamedTuple,或者第三方库const,修改直接抛出异常,杜绝误改


新手避坑总结

1、变量赋值永远是地址引用,不存在数据拷贝;

2、命名先保语法合法,再贴合PEP8;

3、日常开发只用全大写约定常量,无需过度引入第三方库

返回列表