- Python3.5從零開始學
- 劉宇宙
- 2028字
- 2020-11-28 16:06:59
2.3 變量和關鍵字
編程語言最強大的功能之一是操縱變量。變量(variable)是一個需要熟知的概念,如果你覺得數學讓你抓狂,別擔心,Python中的變量很好理解。變量基本上代表某個值的名字。
2.3.1 變量
變量指向各種類型值的名字,以后再用到這個值時,直接引用名字即可,不用再寫具體的值。在Python中,變量的使用環境非常寬松,沒有明顯的變量聲明,而且類型不是固定的。你可以把一個整數賦值給變量,如果覺得不合適,把字符串賦給變量也可以。
在Python中,等號(=)是賦值語句,可以把任意數據類型賦值給變量。
如果要定義一個名為xiaohong的變量,該怎么操作呢?輸入如下:
>>> xiaohong='XiaoHong' >>>
注意 字符串必須以引號標記開始,并以引號標記結束。
此操作解釋:xiaohong是我們創建的變量,=是賦值語句,XiaoHong是變量值,需要用引號標記。整句話的意思為:創建變量xiaohong并賦值為XiaoHong。
小萌疑惑了,怎么前面輸入后按回車鍵就能輸出內容,這里怎么跳到輸入提示狀態呢?別急,還記得前面講的print()嗎?print()是輸出函數,看看這里,沒有使用輸出函數,屏幕上當然不會輸出內容了。要輸出內容應該怎么操作呢?我們嘗試一下:
>>> print(xiaohong) XiaoHong
不錯,嘗試成功了。但為什么小萌輸入的是print(xiaohong),結果卻輸出XiaoHong呢?這就是變量的好處,可以只定義一個變量,比如xiaohong,把一個值賦給這個變量,比如XiaoHong,這樣當我們輸出xiaohong時,實際上輸出的是XiaoHong。
在使用變量前需要對其賦值。沒有值的變量是沒有意義的,編譯器也不會編譯通過。例如,定義一個變量為abc,不賦任何值,輸入及結果如下:
>>>abc Traceback (most recent call last): File "<pyshell#33>", line 1, in<module> abc NameError: name'abc'is not defined
同一個變量可以反復賦值,而且可以是不同類型的變量,輸入如下:
>>>a=123 123 >>>a='ABC' >>>print(a) ABC
這種變量本身類型不固定的語言稱為動態語言,與之對應的是靜態語言。靜態語言在定義變量時必須指定變量類型,如果賦值時類型不匹配就會報錯。和靜態語言相比,動態語言更靈活。
當不能確定變量或數據的類型時,可以借助解釋器內置的函數type進行確認。在交互模式下可以輸入如下:
>>> type('Hello, world! ') <class 'str'>
測試得到輸入的結果類型是字符串類型(str)。
>>> type(100) <class 'int'>
測試得到輸入的結果類型是整型(int)。
>>> type(3.0) <class 'float'>
測試得到輸入的結果類型是浮點型(float)。
>>> a='test type' >>> type(a) <class 'str'>
測試得到輸入的結果類型是字符串類型(str)。
>>>b=100 >>> type(b) <class 'int'>
測試得到輸入的結果類型是整型(int)。
>>> c=3.0 >>> type(c) <class 'float'>
測試得到輸入的結果類型是浮點型(float)。
只要是用雙引號或單引號括起來的值,都屬于字符串。交互模式下輸入:
>>> type('test single quotes') <class 'str'> >>> type("test double quote") <class 'str'> >>> type("100") <class 'str'> >>> type("3.0") <class 'str'> >>> b='3' >>> type(b) <class 'str'> >>> b='100' >>> type(b) <class 'str'> >>> c='3.0' >>> type(c) <class 'str'>
測試得到輸入的結果類型都是字符串類型(str)。
注意不要把賦值語句的等號等同于數學中的等號。比如下面的代碼:
a = 100 a = a + 200
小萌一臉疑問,a = a + 200是什么等式啊?讀書時不知道在這個等式上花費了多少腦細胞,可別再拿這個騙我了,我可是讀過小學的。小萌啊小萌,計算機可不是人腦,也不需要遵循學校的知識,計算機有計算機的思考方式。在編程語言中,賦值語句先計算右側的表達式a+ 200,得到結果300,再賦給變量a。由于a之前的值是100,重新賦值后,a的值變成300。我們通過交互模式驗證,輸入如下:
>>> a=100 >>> a=a+200 >>>print(a) 300
和我們所描述的結果一致。
理解變量在計算機內存中的表示也非常重要。當我們輸入如下:
>>> a='ABC'
這時,Python解釋器做了兩件事情:
(1)在內存中創建了一個’ABC’字符串。
(2)在內存中創建了一個名為a的變量,并把它指向’ABC'。
也可以把一個變量a賦值給另一個變量b,這個操作實際上是把變量b指向變量a所指向的數據,例如下面的代碼:
>>> a='ABC' >>> b=a >>> a='XYZ' >>> print(b)
最后一行輸出變量b的內容到底是’ABC’還是’XYZ’呢?如果從數學意義上理解,就會錯誤地得出b和a相同,應該是’XYZ'。實際上,b的值是’ABC'。我們一行一行執行代碼,就可以看到到底發生了什么事。
執行a = 'ABC',解釋器創建了字符串’ABC’和變量a,并把a指向’ABC',如圖2-3所示。

圖2-3 a指向’ABC'
執行b = a,解釋器創建了變量b,并把b指向a指向的字符串’ABC',如圖2-4所示。

圖2-4 a、b指向’ABC'
執行a = 'XYZ',解釋器創建了字符串’XYZ',并把a的指向改為’XYZ',但b沒有更改,如圖2-5所示。

圖2-5 a指向’XYZ', b不變
最后輸出變量b的結果自然是'ABC'了。
2.3.2 變量名稱
程序常常選擇有意義的名稱作為變量名,以此標記變量的用途。
變量名是由數字或字符組成的任意長度的字符串,必須以字母開頭。使用大寫字母是合法的,但變量名建議使用小寫字母開頭。Python是區分大小寫的。舉個例子來說,Name和name是兩個不同的變量名。交互模式中輸入如下:
>>> name='study python is happy' >>> Name='I agree with you' >>> print(name) study python is happy >>> print(Name) I agree with you
下劃線“_”可以出現在變量名中,經常用于連接多個詞組,如happy_study, do_it_with_more_practice。交互模式輸入如下:
>>> happy_study='stay hungry stay foolish' >>> print(happy_study) stay hungry stay foolish
如果給變量取非法的名稱,解釋器就會顯示語法錯誤。請看下面的示例:
>>> 2wrongtest='just for test' SyntaxError: invalid syntax
該示例提示語法錯誤,錯誤信息為無效的語法,原因為不是以字母開頭的。
>>> xiaoming@me='surprised' SyntaxError: can't assign to operator
該示例提示語法錯誤,錯誤信息為不能做指定操作,原因是包含一個非法字符@。
Python不允許使用關鍵字作為變量名,請看下面的例子:
>>> from='from' SyntaxError: invalid syntax
from是Python的一個關鍵字,因此出現錯誤。
Python 3中共有33個關鍵字,都不能作為變量名來使用。
False None True and as assert break class continue def del elif else except finally forfrom global if import in nonlocal lambda is not or pass raise return try while with yield
- Instant Node Package Manager
- Python量化投資指南:基礎、數據與實戰
- Building a RESTful Web Service with Spring
- MongoDB for Java Developers
- Clojure for Java Developers
- QGIS 2 Cookbook
- Mockito Essentials
- Python趣味編程與精彩實例
- C語言程序設計實驗指導與習題精解
- 第五空間戰略:大國間的網絡博弈
- Selenium Essentials
- Learning Puppet
- JavaScript重難點實例精講
- Netty 4核心原理與手寫RPC框架實戰
- Test-Driven Java Development(Second Edition)