- Python自動化開發實戰
- 黃永祥
- 808字
- 2019-12-09 14:29:39
2.1 變量的命名與使用
變量來源于數學,在計算機語言中能儲存計算結果或表示值的抽象概念。變量可以通過變量名設定,大多數情況下,變量是可變的。在計算機編程里面,變量是非常有用的,它對每一段數據都賦給一個簡短、易于記憶的名字,這個數據可以是用戶輸入的數據、特定運算的結果以及程序輸出數據等。簡而言之,變量是用于跟蹤所有數據的簡單工具。
Python的變量與其他編程有所區別,如Java和C#,這類編程語言需要定義變量類型才能對變量進行使用。而Python的變量無需定義變量類型,直接對變量賦值即可,Python會根據變量值來自動識別變量類型。
變量類型包含了數據類型,數據類型會在第3章詳細介紹,常用變量類型的種類有整型、字符串、浮點型、布爾型、字典和元組列表等。簡單地理解,變量可以比作為一個人,而人又分為男人和女人,這里的男人和女人就相當于變量類型,是根據性別的不同進行分類的,而變量類型則是根據變量值的不同進行分類的。
了解了變量和變量類型后,接下來學習Python的變量如何定義及使用。我們在PyCharm下輸入以下代碼:

在PyCharm中運行上述代碼,查看代碼輸出結果,如圖2-1所示。

圖2-1 輸出結果
上述代碼中,我們分別定義了4個不同類型的變量,比如變量iVariable,變量首個字母i代表變量類型為整型(int),Variable代表變量。變量命名一般遵從以下規則:
(1)變量名只能是字母(A-Z,a-z)、數字(0-9)或下劃線。
(2)第一個字母不能是數字,例如2Variable,這不是一個合法的變量。
(3)不能是Python關鍵字,例如不能用class這個單詞來命名一個變量。
(4)區分大小寫,例如iA和ia是兩個不同的變量。
理論上,在遵守了上面幾條規則的前提下,所命名的變量都是合法的,有時變量命名盡管是合法的,但可讀性非常差也不可取,所以,在實際編程中,變量命名往往都有自己的一個命名規范,本書介紹一種常見的命名規范:
(1)一個單詞作為變量時,單詞首個字母建議大寫,并在單詞最前方添加變量類型,如上述的iVariable。
(2)如果變量由多個單詞組成,每個單詞首個字母大寫,單詞直接拼接并在單詞最前方添加變量類型,如iMyVariable。
(3)如果不想在變量前添加變量類型,變量首個字母為小寫,若有多個單詞拼接,則拼接的單詞首個字母為大寫,如variable或myVariable。
了解了變量的命名后,下一步我們來介紹變量的使用。從上述代碼中,我們將變量值進行輸出,這個輸出過程就是變量的使用。每個變量在使用前都必須賦值,變量賦值以后該變量才會被創建。比如執行“print('變量為:', variable)”這一行代碼,程序執行時會提示錯誤信息“NameError: name 'variable' is not defined”,這是由于變量variable沒有賦值,所以程序執行過程中并沒有創建變量variable而提示variable沒有被定義的錯誤信息。
Python還支持多個變量同時賦值,多變量賦值主要有兩種方式,第一種賦值方式是首先創建一個整型對象,其值為1,然后對變量a、b、c進行賦值;第二種賦值方式是分別創建三個不同類型的對象,然后分別賦值給變量d、e、f。代碼如下:

變量的命名與使用相對較為簡單,讀者只需掌握變量的命名規則以及使用方式即可。最后上述提及到不能使用Python關鍵字作為變量名,Python中共有33個關鍵字,這些關鍵字都不可當作變量名來使用,如表2-1所示。
表2-1 Python關鍵字

2.2 變量的深淺拷貝
變量的拷貝是對變量進行數據處理的時候,為了保留數據處理前的變量而重新定義新的變量,簡單來說,就是將一個變量的數據復制到另外一個變量里。我們可以通過代碼的形式加以說明:
a = 'hello World' b = a print(b) # 程序輸出hello World
通過b=a這種方式將字符串“hello World”分別賦值給變量a和變量b。變量的拷貝主要分為淺拷貝和深拷貝,這兩種拷貝方式主要用于數據類型為列表和字典的變量。
在第2.1節中,我們提到數據類型主要有整型、字符串、浮點型、布爾型、字典和元組列表等。本節以列表為例,列表可以理解為隊列,如現實生活中的排隊購票,這個隊伍可理解為Python的列表,而隊伍中每一個人可理解為列表的元素。
現在將列表以代碼的形式表示,并由變量list_1表示,然后通過淺拷貝的方式賦值給list_2,最后修改list_2的某個元素,觀察變量list_1和list_2的具體變化。代碼如下:

上述代碼涉及到列表的使用、功能模塊的導入和函數的調用,這些都是Python的基礎語法之一,具體的使用說明會在后續的章節中詳細講述。本節主要講述變量list_1的值為列表或字典的時候,通過list_2=list_1的淺拷貝,當某個變量的列表元素發生變化時,觀察另外一個變量的變化情況。上述代碼的輸出結果如圖2-2所示。

圖2-2 變量淺拷貝的輸出結果
從圖中可以看到,如果變量a是一個列表或字典,并且通過淺拷貝的方式生成變量b,當其中一個變量發生改變時,另外一個變量也會隨之變化。
在上述條件下,如果其中一個變量發生改變,另外一個變量不會隨之變化,這樣可以使用深拷貝的方式實現。根據上述代碼進行簡單的修改即可實現,代碼如下:

將上述代碼運行輸出,查看變量list_1和變量list_2的變化情況,從輸出結果可以看到,當修改變量list_2某個元素的時候,變量list_1不會發生任何變化。輸出結果如圖2-3所示。

圖2-3 變量深拷貝的輸出結果
本節主要講述變量深淺拷貝的使用,深淺拷貝只適用于變量值為列表或字典的變量,在日常開發中,開發者常常會由于一時大意而忽略深淺拷貝的區別,導致程序出現錯誤而無法查明原因,因此讀者要明確區分深淺拷貝的差異。