- 例解Python:Python編程快速入門踐行指南
- 張志剛
- 1528字
- 2021-02-22 11:14:50
1.7 變量
1.7.1 變量定義的要求及推薦的命名方法
有時候,我們會看到“字面量”這個詞。字面量指字面本身的含義,比如100永遠是數字100的意思,“hello world”永遠是字符串本身的內容。編程時,使用這些字面量一方面不靈活,另一方面也沒有實際的意義。用到的數字100是什么意思呢?是想表達質量100kg,還是汽車行駛的速度100km/h呢?如果用名稱speed來代替100,我們就可以大概猜到這一定是某個速度。這里用到的speed就是變量。
在編寫代碼時,有些數據(如一個數字或一個字符串)需要反復用到,這個時候最好的辦法是給其“起個名字”,這個名字就是變量。通過變量可以簡化代碼的輸入,而且當數據需要改變時,只要把變量的值改一下就可以了,而不是費力地去查找替換。程序代碼要用到10次數字100,如果只是簡單地每次寫上100,那么將來要把100改成200,必須修改10個位置;而使用變量,只要把變量的值修改一次就完成了。
變量名由一組字符構成,但并不是什么樣的字符都是可用的。對于可以使用的字符,硬性的要求只有以下三點:
? 首字符必須是字母或下畫線。
? 其余字符除字母、下畫線外,還可以使用數字。
? 區分大小寫。
不過,為變量起一個“好的名字”還是很重要的。例如,在程序的編寫過程中要用到5個變量,這5個變量起名a1、a2、a3、a4、a5是完全合法的,但是這種名字用起來自己可能也會混淆,更不用說其他人看你的代碼時會有多痛苦了。那么,什么樣的名字才是一個好的名字呢?現將部分用法總結如下:
? 變量名通常全部使用小寫字母,雖然大寫字母也是合法字符。
? 使用有意義的名字。例如,保存數字的變量起名為number,保存用戶名的變量起名為username。
? 如果用到多個單詞,則單詞間用下畫線分隔,如python_string。
? 使用較為簡短的名字,如python_string可以簡寫為py_str。
? 變量名使用名詞。另外,函數也有名字,而函數通常要實現某一個功能、做某一件事,用“動詞+名詞”更為合適。例如,用變量phone保存電話號碼,而使用update_phone作為函數名,就是實現更新電話號碼的功能。
1.7.2 變量賦值
變量賦值使用一個等號來實現,而且變量賦值是自右向左進行的。Shell腳本中的變量賦值,等號兩邊不允許出現空格;而Python不做要求,通常的寫法是等號兩邊都有空格。
把數字10的值,賦值給變量number的寫法如下:

把10與20的和賦值給number的寫法如下:

將number的值增加10的寫法如下:

初學者有時會被上面的寫法困擾,怎么也想不明白number為什么和number+10是相等的。注意,這不是比較,而是賦值,而且賦值運算是自右向左進行的。所以上面語句的正確理解是,先取出number的值,將其與數字10求和,得到的結果再賦值給變量number。
將number的值增加10,還可以寫成如下格式:

這種寫法與前一種寫法是完全等價的。要注意,number必須是已存在的一個變量,否則將會出現NameError這樣的錯誤。也就是說,變量在使用之前必須先賦值。
如果你有一些其他編程語言的基礎,這時候一定會想到,變量自增、自減可以用++或--來實現。讓我們試一下:

不要懷疑,Python的確不支持num++、num--這種操作。++num和--num沒有報錯,但是值沒有變,因為它是“正正為正”“負負為正”的意思,這里的+和-只不過是正負號而已。Python崇尚的是簡潔,不要有歧義,因為num++或++num這種自增方法初學時會有一定的學習難度,所以Python沒有引入這種用法。
變量也支持鏈式賦值、多元賦值,如下所示:


Python的思想,可以在交互解釋器中通過import this來探知一二。

此短文是Tim Peters編寫的《Python之禪》,它的主要思想用前三句話就可以代表了,簡單來說就是:美勝丑、明勝暗、簡勝繁。
1.7.3 變量類型
Python是動態類型的語言,它有多種數據類型,但是并不需要提前聲明。Python會根據變量中保存的值來確定變量是何種類型。

將整數10賦值給a,變量a就變成了整數類型;而再次將字符串“hello”賦值給a,變量a又自動變成了字符串類型。通過內建函數type()可以查看數據的類型。
一般來說,同種類型的數據才能做相應的運算,不同類型的數據進行運算則會出現錯誤:
