Python中的标识符是由用户定义的名称,用来指定变量名称、函数名称、类名称,模块等名称。
1、标识符的命名规则
(1)不能使用Python的保留字(关键字)来命名标识符;
(2)Python标识符合法的字符包括:26个大小写字母[a-z,A-Z],10个阿拉伯数字[0-9]及下划线;
(3)标识符不能以数字开头;
(4)标识符开始字符可以是大小写字母或下划线;
(5)Python中标识符的长度没有限制;
(6)Python标识符是大小写敏感的(即字母大小写代表不同的标识符)。
2、一些符合要求的标识符示例
name1 有字母和数字构成,且开头字符是字母;
student_age 有字母和下划线构成;
_income 有下划线开始
为了增强程序的可读性,特别是比较长或大型程序中,在命名标识符时,最好能见名知义,否则时间久了,连自己都不知道代表什么意思,当然,写注释也是帮助理解程序的一种很好的做法。
3、一些不合法的标识符示例:
100 不允许只有数字构成;
3year 标识符不能以数字开头
a-b 标识符中包含不合法的字符(-)
for 标识符是Python中的关键字
teacher and student 标识符包含非法的字符-空格或空白
3、标识符有效性检验
在Python中,可以使用 isidentifier() 函数来检验一个标识符是否是合法的。但是,这个函数不会忽略Python中的关键字。即,你准备使用Python中的关键字来命名自己的标识符的话,这个函数也会认为是有效的,毕竟,Python中的关键字也是标识符,只不过是Python中保留下来用于构建自己的语法组成。
但是,我们可以借助另外一个函数 keyword.iskeyword() 来判断一个标识符是不是关键字,使用这两个函数就可以完全来检验自己定义的标识符是不是有效的了。
具体操作代码:
print("name1".isidentifier()) #True
print("100".isidentifier()) #False
print("_income".isidentifier()) #True
print("3year".isidentifier()) #False
print("a-b".isidentifier()) #False
print("for".isidentifier()) #True
最后一个,for被判定为True,但它是Python的关键字,我们不能使用它来命名自己的标识符。
可以使用下面的程序先来判断一下要使用的标识符是不是关键字,如果不是的话,再进一步使用上面的函数来判断是不是有效的标识符即可。
import keyword
print(keyword.iskeyword("for")) # True
上面输出的为True,则for为关键字,你就不能使用它作为自己的标识符了。
上面在Python3.8.3Shell中运行的情况如下图所示:
如果有需要的话,可以定义一个函数来实现相关的功能:
def isValidIdentifier(str):
return str.isidentifier() and not keyword.iskeyword(str)
print(isValidIdentifier("for")) # False
5、Python标识符命名最佳实践
(1)类名最好以大写字母开始,如Student,Teacher,Employee,等。
(2)如果类名有多个单词构成,则每个单词的开头字母都要大写,如StudentClass, FileHelper等。
(3)变量的名称、函数的名称、模块的名称,要使用小写字母来命名,如 age, say(),等。
(4)如果变量、函数名称、模块名称由多个单词构成,则单词与单词间使用下划线进行分隔:如:student_name, print_score()等。
(5)如果变量被定义为私有变量,则命名可以使用下划线作为开始字符;
(6)避免命名标识符时,开头字符和结尾字符都是下划线,因为这种标识符是Python的内置类型;
(7)避免标识符的开头和结尾同时有两个下划线,这是因为这种命名方式是Python语言定义的特殊名称;
(8)尽量使标识符的命名有意义,见名知义是最好的方法,如 student_name要比sn好很多;
(9)如果一个函数返回一个布尔类型的结果,则最好在给函数命名时以"is"开头,如:isfineshed,isateacher等。
(10)虽然在Python中,标识符的长度没有限制,但最好是使其尽可能的短,如 stu_first_name要比the_student_entity_fist_name好很多。
新闻热点
疑难解答