小码农

趣味编程-面向每个人的创意编程

python合法标识符都有那些

avatar 2022-12-20 21:47 1381次浏览 0 条评论 Python

什么是标识符

 

在Python中,标识符是用来区别开每个对象的对象名称。标识符由用户定义,主要用来给变量(Varible)、函数(Function)、类(Class),模块(Module)等命名。

 

Python标识符最佳实践

 

Python标识符的命名规则

 

 

每种语言都有自己标识符的命名规则,这些规则基本都大同小异。Python的标识符命名规则主要包括:

 

 

  • 标识符合法的字符:26个英文字母(包括大小写a-z,A-Z)、10个阿拉伯数字(0-9)以及下划线(_);
  • 标识符的第一个字符只能是字母或下划线,不能以数字开始;
  • Python标识符的长度没有限制;
  • 用户定义的标识符不能是Python的保留字或关键字,如for,if等;
  • Python是字母大小写敏感的语言,如Abc、abc、ABc是不同的标识符。

 

下面分别使用一些例子来说明什么是合法有效的Python标识符以及什么样的标识符是不合法的。

 

合法的标识符举例

 

name1:这个标识符是由字母和数字构成的,且开头字符是英文字母,所以其是合法有效的标识符;

 

student_age:这个标识符是由字母和下划线构成的,也是合法有效的标识符;

 

_income:该标识符以下划线开始,且有效字符满足上面的要求,因此这也是合法的标识符。

 

 

在实践中,为了增强Python程序的可读性,我们在给标识符命名时,尽量做到见名知义。否则,随着时间的流逝,在没有注释帮助下,读者很可能就不知道标识符的具体含义了

 

合法有效的标识符

 

不合法的标识符举例

 

为了更好地理解Python标识符的命名规则,下面给出一些不合法的标识符:

 

100:这个标识符只有数字构成,违反了开头字符不能是数字的法则;

 

3year:这个标识符也是违反了不能以数字开头的约定;

 

a-b:这个标识符中包含不合法的字符(-);

 

 

for:这个标识符是Python中的关键字,这是不允许的;

 

 

teacher and student:这个标识符包含非法的字符——空格或空白字符。

 

 

对于一个新手来说,可能判断一个标识符是否有效,可能存在一定的困难。幸运的是,Python中给出了标识符有效性检验的函数,来判断一个标识符是否是有效的标识符。

 

不合法的标识符

 

判断一个标识符是否是有效

 

对于新用户来讲,Python提供了 isidentifier() 函数来判断一个标识符是否是有效合法的标识符。

 

但是,这个函数不会忽略Python中的保留字或关键字。因为,这些关键字或保留字也是Python的标识符,不过其用来构成了Python的语法字,用户不能再使用它作为自己的标识符了。

 

那问题就来了,如果你准备使用Python中的关键字来作为自己的标识符的话,isidentifier()函数也会认为是有效的。这岂不是给新用户带来了困惑。

 

困惑

 

遇到问题,我们总要解决问题的。Python还提供了另外一个函数,帮助我们来识别一个标识符是不是Python中的关键字,这个函数就是 keyword.iskeyword(),从名字上就知道它的含义了吧。借助isidentifier()和keyword.iskeyword()这两个函数就可以完全来验证自己定义的标识符是不是有效和合法的了。

 

 

下面首先看一下isidentifier()函数的使用方法。

 

isidentifier()函数的作用

 

下面代码检测了上面有效和无效的标识符:

 

 

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的关键字,我们不能使用它来命名自己的标识符。

 

下面使用keword.iskeyword()函数来验证一下“for”是不是Python的关键字。具体操作过程中可以先使用下面的程序先来判断一个标识符是不是Python的关键字,如果不是的话,再进一步使用isidentifier()函数来判断是不是有效的标识符就行了。

 

 

import keyword
print(keyword.iskeyword("for")) # True

 

上面的例子中,首先导入了Python的keyword模块,然后再使用keyword.iskeyword()函数来判断。上面判断“for”是不是Python的关键字,结果输出为True,则for为关键字,那么,你就不能再使用它作为自己的标识符了。

 

 

上面的程序在Python3.8.3中运行的情况如下图所示:

 

isidentifier()函数的作用

这似乎有些麻烦,那么,自己可以定义一个函数来实现上面的两步操作:

 

 

def isValidIdentifier(str):
return str.isidentifier() and not keyword.iskeyword(str)

print(isValidIdentifier("for")) # False

 

总结

 

上面对Python的标识符进行了详细的介绍,下面再给出整篇文章的总结。

 

Python标识符最佳实践

 

(1)Python的类名最好以大写字母开始,如Student,Tutor,Employee,等。若类名由多个词构成时,则每个词的第一个字母都要大写,如BaiJiaHao, HttpHelper等。

 

(2)变量、函数、模块的标识符只有一个词构成时,要使用小写字母来命名,如site, hello()等。若由多个词构成时,则词与词之间要使用下划线隔开:如:site_name,print_path()等。

 

(3)如果一个变量被定义为私有变量,则其名称可以使用下划线作为开始字符;

 

(4)开始字符和结束字符都是下划线的标识符是Python的内置类型,自定义标识符应避免使用这种风格去命名,以免引起混淆;也不要使用开始和结束都为两个下划线的情况,这也是Python类内部一些特殊方法的命名规则;

 

(5)标识符命名时尽量见名知义,方便阅读,提高阅读效率;

 

(6)若某个函数是用来判别某种情况的,且返回值是布尔类型时,可以使用is来开始,如isover,ishead等;

 

(7)标识符不易过长,过长书写不方便,阅读也困难。

 

发表评论