任何事情只要有人規定成文了,必定有其原因所在,也就是有其合理性所在。
Python變數命名規則(推薦學習:Python影片教學)
變數名稱只能包含字母、數字和底線。變數名稱可以字母或底線開頭,但不能以數字開頭,例如,可將變數命名為message_1,但不能將其命名為1_message。
變數名稱不能包含空格,但可使用底線來分隔其中的單字。例如,變數名稱greeting_message可行,但變數名稱greeting message會引發錯誤。
不要將Python關鍵字和函數名用作變數名,即不要使用Python保留用於特殊用途的單字,如print。
變數名應既簡短又具有描述性。例如,name比n好,student_name比s_n好,name_length比length_of_persons_name好。
慎用小寫字母l和大寫字母O,因給他們可能被人錯看成數字1和0;
注意:應使用小寫的Python變數名稱。在變數名稱中使用大寫字母雖然不會導致錯誤,但避免使用大寫字母是個不錯的注意。
那麼為什麼它不能以數字開頭呢?這應該要從編譯原理的角度來解釋了吧。
這是我今天在做腳本解析時突然想到的。先來說明我們的這個語法解析工具,要解析的腳本很簡單,只包括了&,|,~,=,!=,()和{}等操作符。一開始採用了編譯原理的那一套,畫NFA、DFA,找出狀態然後再寫詞法分析生成Token,接著語法分析將生成的Token根據語義生成語法樹,最後求值。後來想一想,這個腳本很簡單只需要一個一個字符判斷遇到不同類型的字符就進入到不同的子函數中進行處理,同時完成詞法解析和語法分析以及求值的過程。不過無論使用那種方法都需要根據讀入的字元來判斷目前進入到哪個Token裡了,這就是問題的關鍵所在。
為什麼說判斷字元屬於哪個Token是關鍵呢?
假設我們取消掉了變數名稱定義中不能以數字開頭的限制,這時當詞法分析器進入到一個Token分析的起始狀態時,如果讀取的第一個字元為數字,那麼詞法分析器就是無法判斷它目前要分析的這個Token是變數名稱還是數字常數了。好,如果你說分析器可以根據後面的字元來判斷的話,那麼如果下一個字元為字母,那麼很容易就判斷出當前Token屬於變數名稱(我們暫且忽略保留關鍵字),但是當如果接下來的字元全都是數字那怎麼辦?分析器將無法判斷,因為變數名的定義中允許數字的存在。
呵呵,上面也許說的比較繞口難於理解,用句簡單的話來講就是:當分析"123"這個字串的時候,如果變數名稱允許第一個字元為數字,分析器就不知道「123」該是數值常數還是變數名了。
更多Python相關技術文章,請造訪Python教學欄位學習!
以上是python變數為什麼不能以數字開頭的詳細內容。更多資訊請關注PHP中文網其他相關文章!