【原創】Python第二章——標識符命名規則


    在Python中,一切都是對象,包括常量數據類型,如整數數據類型(1,2,3...),字符串數據類型("ABC")。想要使用這些對象,就要使用它的對象引用。賦值操作符,實際上是使得對象引用對內存中存放數據的對象進行引用。

 
    那什么是標識符?標識符是對對象引用起的一個名字。
 
有效的Python標識符規則:
(1)長度任意長;
(2)標識符不能與關鍵字同名;
(3)在2.x版本的Python中,標識符以ASCII的字母或下划線開始,后面可以接字母、數字、下划線;在3.x的Python中,標識符ASCII字母、下划線以及大多數非英文語言的字母,只要是Unicode編碼的字母都可以充當引導字符,后續字符可以是任意引導符,或任意非空格字符,包括Unicode編碼中認為是數字的任意字符。(因此 可以使用阿拉伯語、中文、日語或俄語字符或Unicode字符集支持的任意其他語言中的字符進行命名)
 
約定:
(1)不要使用Python預定義的標識符名,因此要避免使用NotImplemented與Eliiipsis等名字,這些在未來有可能被Python的新版本使用到;
(2)不要使用Python內置函數名或內置數據類型或異常名作為標識符名;
(3)關於下划線的約定,名字的開頭和結尾都使用下划線的情況應該避免,因為Python中大量采用這種名字定義了各種特殊方法和變量;在有些情況,以一個或兩個下划線引導的名稱,但是沒有使用兩個下划線結尾的應該特殊對待。
 
舉例:
>>> math=2
>>> math
2
上面的語句是合法的,但是它將與math數據類型綁定的對象引用重新與int數據類型對象綁定,那么將不能正常使用math數據類型的屬性了。
>>> int=2
>>> int
2
和上面的一樣,是合法的但是不提倡。
#合法
a123_=2   
_a123=2=2        #中文
α=2         #希臘字母
#不合法的標識符名
a-b=2        #因為包含了減法操作符,'-'不是一個Unicode字母、數字、下划線,不能將2賦值給操作符
2miles=2     #不能數字開頭
I'm=2        #單引號不是一個Unicode字母、數字或下划線
 
關於下划線還有一點想說的:
    單一的下划線可以作為一個標識符,在交互解釋器或Python Shell內部,下划線實際上存放了最后一個被評估的表達式的結果。在通常運行的程序中,使用下划線和其他普通標識符一樣,需要自己預先定義,非系統占有。
    在不關心迭代針對的數據項是,有些程序員喜歡在for...in..中使用_,如:
#沒有使用到迭代的數據項
for _ in (0,1,2,3,4,5):
    print("Hello")
    另外要注意一點,一些編寫國際化程序的程序員一般會使用_作為其翻譯函數的名稱。這些程序員一般不使用gettext("translate me"),而是使用_("translate me")。
     當變量是私有的時候,用_xxx 來表示變量是很好的習慣。
    在類中, “單下划線” 開始的成員變量叫做保護變量,意思是只有類對象和子類對象自己能訪問到這些變量 ,需通過類提供的接口進行訪問,不能用“from xxx import *”而導入 “雙下划線” 開始的是 類的 私有成員,意思是只有類對象自己能訪問,連子類對象也不能訪問到這個數據。 以雙下划線開頭和結尾的(__foo__)代表python里特殊方法專用的標識,如 __init__()代表類的構造函數。
 
參考:
《Python 3 程序開發指南》 (第二版)
 
本文鏈接:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM