8.Python标识符命名规范
2024-08-31 10:37:57
简单地理解,标识符就是一个名字,就好像我们每个人都有属于自己的名字,它的主要作用就是作为变量、函数、类、模块以及其他对象的名称。
Python 中标识符的命名不是随意的,而是要遵守一定的命令规则,比如说:
- 标识符是由字符(A~Z 和 a~z)、下划线和数字组成,但第一个字符不能是数字。
- 标识符不能和 Python 中的保留字相同。有关保留字,后续章节会详细介绍。
- Python中的标识符中,不能包含空格、@、% 以及 $ 等特殊字符。
例如,下面所列举的标识符是合法的:UserID
name
mode12
user_age以下命名的标识符不合法:
4word #不能以数字开头
try #try是保留字,不能作为标识符
$money #不能包含特殊字符 - 在 Python 中,标识符中的字母是严格区分大小写的,也就是说,两个同样的单词,如果大小格式不一样,多代表的意义也是完全不同的。比如说,下面这 3 个变量之间,就是完全独立、毫无关系的,它们彼此之间是相互独立的个体。
number = 0
Number = 0
NUMBER = 0 - Python 语言中,以下划线开头的标识符有特殊含义,例如:
- 以单下划线开头的标识符(如 _width),表示不能直接访问的类属性,其无法通过 from...import* 的方式导入;
- 以双下划线开头的标识符(如__add)表示类的私有成员;
- 以双下划线作为开头和结尾的标识符(如 __init__),是专用标识符。
因此,除非特定场景需要,应避免使用以下划线开头的标识符。
另外需要注意的是,Python 允许使用汉字作为标识符,例如:
C语言中文网 = "http://c.biancheng.net"
但我们应尽量避免使用汉字作为标识符,这会避免遇到很多奇葩的错误。
标识符的命名,除了要遵守以上这几条规则外,不同场景中的标识符,其名称也有一定的规范可循,例如:
- 当标识符用作模块名时,应尽量短小,并且全部使用小写字母,可以使用下划线分割多个字母,例如 game_mian、game_register 等。
- 当标识符用作包的名称时,应尽量短小,也全部使用小写字母,不推荐使用下划线,例如 com.mr、com.mr.book 等。
- 当标识符用作类名时,应采用单词首字母大写的形式。例如,定义一个图书类,可以命名为 Book。
- 模块内部的类名,可以采用 "下划线+首字母大写" 的形式,如 _Book;
- 函数名、类中的属性名和方法名,应全部使用小写字母,多个单词之间可以用下划线分割;
- 常量命名应全部使用大写字母,单词之间可以用下划线分割;
有读者可能会问,如果不遵守这些规范,会怎么样呢?答案是程序照样可以运行,但遵循以上规范的好处是,可以更加直观地了解代码所代表的含义,以 Book 类为例,我们可以很容易就猜到此类与书有关,虽然将类名改为 a(或其它)不会影响程序运行,但通常不这么做。
最新文章
- 开源:Taurus.MVC 框架
- 在 Xcode 7 中安装 Alcatraz
- ajax+FormData+javascript实现无刷新表单信息提交
- javaWeb 使用cookie显示上次访问网站时间
- cocos2d-x 中添加显示文字的三种方式 LabelTTF 、LabelBMFont 和 LabelAtlas
- [ionic开源项目教程] - 第13讲 Service层优化,提取公用Service,以及生活和农业两大模块的实现
- Echart图表相关配置项的设置
- 团队作业4——第一次项目冲刺(Alpha版本) Day5
- Problem W
- DVB-C系统中QAM调制与解调仿真
- hdu3555数位dp基础
- java ee wildfly 批处理 job 工作
- Go语言之defer关键字
- 关于c语言的左移运算
- windows、linux下通过ftp上传文件小脚本
- POJ3090(SummerTrainingDay04-M 欧拉函数)
- Scrapy爬虫框架教程(四)-- 抓取AJAX异步加载网页
- c/c++设置图片为透明图
- 2018百度之星开发者大赛-paddlepaddle学习(二)将数据保存为recordio文件并读取
- Codeforces Round #613 Div.1 D.Kingdom and its Cities 贪心+虚树
热门文章
- PostgreSQL通过解析日志,获取数据库增量变化,pg_recvlogical
- git推送新项目到github
- 【iOS】正則表達式抓取网页数据制作小词典
- Dynamic Compilation and Loading of .NET Objects
- Python 进阶篇
- java中<;<;,>;>;和>;>;>;的含义
- Vue中的组件直接的通信是如何实现的
- mycat的wrapper.log日志中发现主从切换报错
- WPF C# 字符串读写文件
- Azure云服务托管恶意软件