Python 需要使用標(biāo)識(shí)符給變量命名,其實(shí)標(biāo)識(shí)符就是用于給程序中變量、類、方法命名的符號(hào)(簡(jiǎn)單來(lái)說(shuō),標(biāo)識(shí)符就是合法的名字)。
Python 語(yǔ)言的標(biāo)識(shí)符必須以字母、下畫線(_)開(kāi)頭,后面可以跟任意數(shù)目的字母、數(shù)字和下畫線(_)。此處的字母并不局限于 26 個(gè)英文字母,可以包含中文字符、日文字符等。
由于 Python 3 支持 UTF-8 字符集,因此 Python 3 的標(biāo)識(shí)符可以使用 UTF-8 所能表示的多種語(yǔ)言的字符。Python 語(yǔ)言是區(qū)分大小寫的,因此 abc 和 Abc 是兩個(gè)不同的標(biāo)識(shí)符。
Python 2.x 對(duì)中文支持較差,如果要在 Python 2.x 程序中使用中文字符或中文變量,則需要在 Python 源程序的第一行增加“#coding:utf-8”,當(dāng)然別忘了將源文件保存為 UTF-8 字符集。
在使用標(biāo)識(shí)符時(shí),需要注意如下規(guī)則:
-
標(biāo)識(shí)符可以由字母、數(shù)字、下畫線(_)組成,其中數(shù)字不能打頭。
-
標(biāo)識(shí)符不能是 Python 關(guān)鍵字,但可以包含關(guān)鍵字。
-
標(biāo)識(shí)符不能包含空格。
例如下面變量,有些是合法的,有些是不合法的:
-
abc_xyz:合法。
-
HelloWorld:合法。
-
abc:合法。
-
xyz#abc:不合法,標(biāo)識(shí)符中不允許出現(xiàn)“#”號(hào)。
-
abc1:合法。
-
1abc:不合法,標(biāo)識(shí)符不允許數(shù)字開(kāi)頭。
Python 的關(guān)鍵字和內(nèi)置函數(shù)
Python 還包含一系列關(guān)鍵字和內(nèi)置函數(shù),一般也不建議使用它們作為變量名:
-
如果開(kāi)發(fā)者嘗試使用關(guān)鍵字作為變量名,Python 解釋器會(huì)報(bào)錯(cuò)。
-
如果開(kāi)發(fā)者使用內(nèi)置函數(shù)的名字作為變量名,Python 解釋器倒不會(huì)報(bào)錯(cuò),只是該內(nèi)置函數(shù)就被這個(gè)變量覆蓋了,該內(nèi)置函數(shù)就不能使用了。
Python 包含了如表 1 所示的關(guān)鍵字:
表 1 Python 關(guān)鍵字
False |
None |
True |
and |
as |
assert |
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 |
|
|
實(shí)際上 Python 非常方便,開(kāi)發(fā)者可以通過(guò) Python 程序來(lái)查看它所包含的關(guān)鍵字。例如,對(duì)于如下程序:
- #導(dǎo)入keyword 模塊
- import keyword
- #顯示所有關(guān)鍵字
- keyword.kwlist
從上面代碼可以看出,程序只要先導(dǎo)入 keyword 模塊,然后調(diào)用 keyword.kwlist 即可查看 Python 包含的所有關(guān)鍵字。運(yùn)行上面程序,可以看到如下輸出結(jié)果:
['False','None','True','and','as','assert','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']
上面這些關(guān)鍵字都不能作為變量名。
此外,Python 3 還提供了如表 2 所示的內(nèi)置函數(shù)。
表 2 Python內(nèi)置函數(shù)
abs() |
all() |
any() |
basestring() |
bin() |
bool() |
bytearray() |
callable() |
chr() |
classmethod() |
cmp() |
compile() |
complex() |
delattr() |
dict() |
dir() |
divmod() |
enumerate() |
eval() |
execfile() |
file() |
filter() |
float() |
format() |
frozenset() |
getattr() |
globals() |
hasattr() |
hash() |
help() |
hex() |
id() |
input() |
int() |
isinstance() |
issubclass() |
iter() |
len() |
list() |
locals() |
long() |
map() |
max() |
memoryview() |
min() |
next() |
object() |
oct() |
open() |
ord() |
pow() |
print() |
property() |
range() |
raw_input() |
reduce() |
reload() |
repr() |
reversed() |
zip() |
round() |
set() |
setattr() |
slice() |
sorted() |
staticmethod() |
str() |
sum() |
super() |
tuple() |
type() |
unichr() |
unicode() |
vars() |
xrange() |
Zip() |
__import__() |
apply() |
buffer() |
coerce() |
intern |
|
|
|
|
上面這些內(nèi)置函數(shù)的名字也不應(yīng)該作為標(biāo)識(shí)符,否則 Python 的內(nèi)置函數(shù)會(huì)被覆蓋。
注意:在 Python 2.x 中,print 是關(guān)鍵字而不是函數(shù)。上面這些內(nèi)置函數(shù)(如 unicode())只是 Python 2.x 的內(nèi)置函數(shù),為了保證 Python 程序具有更好的兼容性,程序也不應(yīng)該使用這些內(nèi)置函數(shù)的名字作為標(biāo)識(shí)符。
|