- Python編程基礎與應用
- 李方園主編
- 1360字
- 2021-10-27 16:38:16
1.3.2 變量與常量
任何編程語言都需要處理數據,如數字、字符串、字符等,用戶可以直接使用數據,也可以將數據保存到變量中,方便以后使用。
變量(Variable)可以看成一個小箱子,專門用來“盛裝”程序中的數據。每個變量都擁有獨一無二的名字,通過變量的名字就能找到變量中的數據。從底層看,程序中的數據最終都要存儲到內存中,變量其實就是這塊內存的名字。圖1-24所示是變量age的示意。

圖1-24 變量示意
和變量對應的是常量(Constant),它們都是用來“盛裝”數據的小箱子,不同的是:變量保存的數據可以被多次修改,而常量一旦保存某個數據之后就不能修改了。
1.變量的賦值
在編程語言中,將數據放入變量的過程叫作賦值(Assignment)。Python使用等號“=”作為賦值運算符,具體格式為:

其中,name表示變量名;value表示值,也就是要存儲的數據。
例如,下面的語句將整數22賦值給變量num:

在程序的其他地方,num就代表整數22,使用num也就是使用22。
【例1-6】 變量賦值。

變量的值不是一成不變的,它可以隨時被修改,只要重新賦值即可。另外用戶也不用關心數據的類型,可以將不同類型的數據賦值給同一個變量。
【例1-7】 變量賦值的變化。

運算結果:

除了賦值單個數據,用戶也可以將表達式的運行結果賦值給變量。
【例1-8】 將表達式的運行結果賦值給變量。

運算結果:

2.下畫線、雙下畫線開始的特殊變量及特殊方法專用標識
Python用下畫線和雙下畫線作為變量前綴和后綴指定的特殊變量。
(1)_xxx變量名
_xxx被看作是“私有的”變量,在模塊或類外不可以使用。當變量是私有的時候,用_xxx來表示變量是很好的習慣。_xxx變量是不能用“from module import *”導入的。在類中“單下畫線”開始“_foo”的成員變量或類屬性叫作保護變量,意思是只有類對象和子類對象自己能訪問這些變量。
(2)__xxx類中的私有變量名
“雙下畫線”開始“__foo”的變量是私有成員變量,意思是只有類對象自己能訪問,連子類對象也不能訪問這個數據。
(3)__xxx__特殊方法專用標識
以雙下畫線開頭和結尾的“__foo__”代表Python里的特殊方法,如__init__(self,...)代表類的構造函數。這樣的系統特殊方法還有許多,如:

因此要注意避免用下畫線作為一般變量名的開始。
3.常量、內置常量
變量是變化的量,常量則是不變的量。Python中沒有使用語法強制定義常量。但是Python有少數的常量存在于內置命名空間中,稱為內置常量,具體如下。
(1)False
bool類型的假值。給False賦值是非法的并會引發SyntaxError。
(2)True
bool類型的真值。給True賦值是非法的并會引發SyntaxError。
(3)None
NoneType類型的唯一值。None經常用于表示因為默認參數未傳遞給函數時的值。需要注意的是,給None賦值是非法的,并會引發SyntaxError報錯。
(4)NotImplemented
二進制特殊方法應返回的特殊值,如__eq__()、__lt__()、__add__()、__rsub__()等,表示操作沒有針對其他類型實現。為了相同的目的,可以通過就地二進制特殊方法,如__imul__()、__rightnd__()等作為返回值,它的邏輯值為真。
(5)Ellipsis
與省略號的字面意思相同。特殊值主要與用戶定義的容器數據類型的擴展切片語法結合使用。
(6)__debug__
如果Python沒有以-O選項啟動,則此常量為真值。
(7)quit(code=None)、exit(code=None)
當打印此對象時,會打印出一條消息,例如“Use quit() or Ctrl-D (i.e. EOF) to exit”,當調用此對象時,將使用指定的退出代碼來引發SystemExit。
(8)copyright、credits
打印或調用的對象分別打印版權或作者的文本。
(9)license
當打印此對象時,會打印出一條消息“Type license() to see the full license text”。當調用此對象時,將以分頁形式顯示完整的許可證文本(每次顯示一屏)。
當然,用模塊和類可以實現真正的常量,這在本書第5章進行詳細介紹。
- 計算機網絡
- Java Web開發學習手冊
- Docker技術入門與實戰(第3版)
- Hands-On Machine Learning with scikit:learn and Scientific Python Toolkits
- React Native Cookbook
- Flink SQL與DataStream入門、進階與實戰
- 編寫高質量代碼:改善Python程序的91個建議
- 精通網絡視頻核心開發技術
- Responsive Web Design by Example
- HTML5與CSS3基礎教程(第8版)
- Node Cookbook(Second Edition)
- INSTANT Yii 1.1 Application Development Starter
- Rust游戲開發實戰
- Google Adsense優化實戰
- Mastering Object:Oriented Python(Second Edition)