Python标识符

1. 有效的Python标识符规则:

(1)长度任意长;
(2)标识符不能与关键字同名;
(3)在2.x版本的Python中,标识符以ASCII的字母或下划线开始,后面可以接字母、数字、下划线;在3.x的Python中,标识符ASCII字母、下划线以及大多数非英文语言的字母,只要是Unicode编码的字母都可以充当引导字符,后续字符可以是任意引导符,或任意非空格字符,包括Unicode编码中认为是数字的任意字符。(因此可以使用阿拉伯语、中文、日语或俄语字符或Unicode字符集支持的任意其他语言中的字符进行命名)

2. 约定:

(1)不要使用Python预定义的标识符名,因此要避免使用NotImplemented与Eliiipsis等名字,这些在未来有可能被Python的新版本使用到;
(2)不要使用Python内置函数名或内置数据类型或异常名作为标识符名;
(3)关于下划线的约定,名字的开头和结尾都使用下划线的情况应该避免,因为Python中大量采用这种名字定义了各种特殊方法和变量;在有些情况,以一个或两个下划线引导的名称,但是没有使用两个下划线结尾的应该特殊对待。

3.Python专用下划线标识符

首先,建议尽量避免使用下划线作为标识符的开始
(1)单下划线开头的变量名
模块级私有,这个被常用于模块中,在一个模块中以单下划线开头的变量和函数被默认当作内部函数如果使用 from a_module import * 导入时,这部分变量和函数不会被导入,除非除非模块或包中的“__all__”列表显式地包含了它们。不过值得注意的是,如果使用 import a_module 这样导入模块,仍然可以用 a_module._some_var 这样的形式访问到这样的对象。
在类中,“单下划线” 开始的成员变量叫做保护变量,意思是只有类对象和子类对象自己能访问到这些变量;
使用单下划线私有变量,是程序员的一个很好的习惯
(2)双下划线开头的变量名(不是以双下划线结尾)
类的私有成员,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据。

即如果有一 Test 类里有一成员 __x,那么 dir(Test) 时会看到 _Test__x 而非 __x。这是为了避免该成员的名称与子类中的名称冲突。但要注意这要求该名称末尾没有下划线。

(3)双下划线开头,双下划线结尾的变量名

python里特殊方法专用的标识,如 __init__()代表类的构造函数。

(4)单下划线_(了解即可)

通常情况下,会在以下3种场景中使用:

a) 在解释器中:在这种情况下,“_”代表交互式解释器会话中上一条执行的语句的结果。

b)作为一个名称: “_”作为临时性的名称使用。这样,当其他人阅读你的代码时将会知道,你分配了一个特定的名称,但是并不会在后面再次用到该名称。例如,下面的例子中,你可能对循环计数中的实际值并不感兴趣,此时就可以使用“_”;

c)国际化:也许你也曾看到”_“会被作为一个函数来使用。这种情况下,它通常用于实现国际化和本地化字符串之间翻译查找的函数名称,这似乎源自并遵循相应的C约定。

 
原文地址:https://www.cnblogs.com/deeper/p/7991576.html