“好名字可能预示着好的开始。”
标识符是指以符号来标识事物以便识别。在编程语言中,标识符是有特定含义的字符,用来识别变量、常量、函数、类等。变量名即是标识符的一种。
在Python中,给变量命名时,必须遵守一些约定的规则,否则将引发错误,具体如下:
1. 变量名只能包含字母、数字和下划线(_),且必须以字母或下划线(_)开头,不能以数字开头。
如下所示:
numer1 = 123 #@01
number_1 = 123 #@02
1number = 123 #@03
1_number = 123 #@04
number$1 = 123 #@05
在#@01、#@02处的变量命名是合法的。
在#@03、#@04、#@05处的变量命名,以数字开头或包含有特殊字符(如$),是不合法的。如强制使用非法变量,会提示语法错误信息“SyntaxError: invalid syntax”。
需要注意的是,使用中文字符来命名变量虽然合法,但不建议用英文字母、数字和下划线(_)之外的其他字符来命名变量。
如下所示:
变量1 = 'Hello'
print(变量1)
2. 变量名不能包含空格,但可以用下划线(_)来分隔。
如下所示:
one message = "After all, tomorrow is another day!" #@01
one_message = "After all, tomorrow is another day!" #@02
message_1 = "After all, tomorrow is another day!" #@03
在#@01处,变量名包含了空格,是非法的变量名。
在#@02、#@03处,变量名中通过下划线(_)来分隔单词或数字等,是合法的变量名。
3. 不要使用Python关键字(又称:保留字)作为变量名,因为这些关键字在Python中有特殊意义。
如关键字def用于定义一个函数,关键字import用于导入一个指定模块等。
在当前最新版本的Python 3.12中,关键字有35个,通过执行以下Python代码可查看这些关键字:
>>> import keyword
print(keyword.kwlist)
打印输出Python的所有关键字:
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
如果要判断变量名(如“continue”)是否为Python关键字,可通过执行以下语句:
import keyword
print(keyword.iskeyword('continue'))
如返回True,则表示为Python关键字,否则不是。
4. 避免使用Python内置标识符作为变量名。如果变量名与内置标识符相同,则会引发错误或变量会覆盖相应的内置标识符的用途。
需要注意的是:Python关键字并不都是包含在内置标识符中,只有FALSE、None、TRUE关键字包含在内置标识符中;内置函数名则全都被包含在内置标识符中;Python关键字与内置函数名并无同名的。
如Python内置的print函数用于打印输出,在交互式解释器中执行以下Python代码:
>>> print = 'I am big!'
>>> print(print)
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
print(print)
TypeError: 'str' object is not callable
如上所示,将会引发错误“TypeError: 'str' object is not callable”,也就是说,当尝试调用一个不可调用的对象时,会发生该错误。
接下来,在交互式解释器中执行以下Python代码:
>>> print(abs) #@01
<built-in function abs>
>>> print(abs(-123)) #@02
123
>>> abs = 'You talking to me?' #@03
>>> print(abs) #@04
You talking to me?
在#@01处,执行结果表明abs为Python内置函数;
在#@02处,执行结果表明使用了abs函数来计算数字的绝对值;
在#@03处,给变量abs赋值时,即将同名的内置函数abs覆盖了,因而在#@04处的执行结果将为abs变量的值。
下面列出了Python 3.12中的内置函数:
表3.2 Python内置函数
A |
E |
L |
R |