变量名只能包含字母、数字和下划线
变量名只能包含字母、数字和下划线。变量名可以字母或下划线打头,但不能以数字打头。例如,可将变量命名为message_1,但不能将其命名为1_message。
Python 语言中,以下划线开头的标识符有特殊含义
在Python中,以下划线开头的变量名有特殊的含义,尤其是在类的定义中,用下划线作为变量前缀和后缀来表示类的特殊成员。
以单下划线开头
说明
_xx:这样的对象叫做保护变量,不能用’from module import *'导入。
_xx 以单个下划线开头命名的方法或者变量,就是说明它是仅提供内部使用的。
举例1:模块访问举例
首先在demo1.py中定义了两个函数,一个以下划线开头,另外一个不以下划线开头:
def my_fun():print('hello my_fun()')def _my_fun():print('hello _my_fun()')
然后在另外一个模块demo2.py中访问这两个函数:
from demo1 import *my_fun()
_my_fun
运行输出:
可以看到,不以单下划线开头的函数my_fun可以正常访问;而以单下划线开头的_my_fun函数访问出错,提醒没有定义。
举例2:类访问举例
在类A中定义了以单下划线开头的成员变量_num,类Aa继承了A类:
class A():def __init__(self):self._num = 1self._age = 12def afun(self):print(self._age)class Aa(A):def __init__(self):super().__init__()a = A()
aa = Aa()
print("在父类中访问_num变量:", a._num)
print("在子类中访问_num变量:", aa._num)
运行输出:
可以发现,通过父类、子类可以访问以单下划线开头的成员变量_num。
以双下划线开头
说明
以双下划线开头的标识符(如__add)表示类的私有成员。
__xxx:类中的私有成员,只有类对象自己的函数中能访问。
举例:类对象通过函数可以访问自身类中双下划线开头的成员变量
在类A中定义了以双下划线开头的变量__age:
class A():def __init__(self): self.__age = 12def afun(self):# 在类本身的函数中访问双下划线开头的变量print(self.__age)class Aa(A):def __init__(self):super().__init__()a = A()
aa = Aa()
# 类对象本身调用自己的函数
a.afun()
运行输出:
举例:子类对象调用父类的函数可以访问父类双下划线开头的成员变量
在类A中定义了以双下划线开头的变量__age:
class A():def __init__(self): self.__age = 12def afun(self):# 在类本身的函数中访问双下划线开头的变量print(self.__age)class Aa(A):def __init__(self):super().__init__()a = A()
aa = Aa()
# 子类对象调用父类的函数
aa.afun()
运行输出:
举例:类对象本身也无法直接访问自己类定义的双下划线开头的成员变量
在类A中定义了以双下划线开头的变量__age:
class A():def __init__(self): self.__age = 12def afun(self):# 在类本身的函数中访问双下划线开头的变量print(self.__age)class Aa(A):def __init__(self):super().__init__()a = A()
# aa = Aa()
a.__age
运行输出:
以双下划线开头、双下划线结尾
以双下划线作为开头和结尾的标识符(如 init),是专用标识符。
以双下划线开头,双下划线结尾的对象,Python内置属性名或者魔法方法名。是Python自己实现的属性和方法,一般不允许自定义类似此种命名方式的属性或者方法。
变量名不能包含空格
变量名不能包含空格,但可使用下划线来分隔其中的单词。例如,变量名greeting_message可行,但变量名greeting message会引发错误。
不要将Python关键字和函数名用作变量名
不要将Python关键字和函数名用作变量名,即不要使用Python保留用于特殊用途的单词,如print。
变量名应既简短又具有描述性
变量名应既简短又具有描述性。例如,name比n好,student_name比s_n好,name_length比length_of_persons_name好。
慎用小写字母l和大写字母O
慎用小写字母l和大写字母O,因为它们可能被人错看成数字1和0。
备注:就目前而言,应使用小写的Python变量名。在变量名中使用大写字母虽然不会导致错误,但避免使用大写字母是个不错的主意。