- Python編程:從入門到實(shí)踐(第3版)
- (美)埃里克·馬瑟斯
- 2035字
- 2025-05-26 17:39:30
2.2 變量
下面來(lái)嘗試在 hello_world.py 中使用一個(gè)變量。在這個(gè)文件開頭添加一行代碼,并對(duì)第二行代碼進(jìn)行修改,如下所示:
hello_world.py
message = "Hello Python world!" print(message)
運(yùn)行這個(gè)程序,看看結(jié)果如何。你會(huì)發(fā)現(xiàn),輸出與以前相同:
Hello Python world!
我們添加了一個(gè)名為 message 的變量(variable)。每個(gè)變量指向一個(gè)值(value)——與該變量相關(guān)聯(lián)的信息。在這里,指向的值為文本 "Hello Python world!"。
添加變量會(huì)使 Python 解釋器需要做更多工作。在處理第一行代碼時(shí),它將變量 message 與文本 "Hello Python world!" 關(guān)聯(lián)起來(lái);在處理第二行代碼時(shí),它將與變量 message 關(guān)聯(lián)的值打印到屏幕上。
下面來(lái)進(jìn)一步擴(kuò)展這個(gè)程序:修改 hello_world.py,使其再打印一條消息。為此,在 hello_world.py 中添加一個(gè)空行,再添加兩行代碼:
message = "Hello Python world!" print(message) message = "Hello Python Crash Course world!" print(message)
現(xiàn)在運(yùn)行這個(gè)程序,將看到兩行輸出:
Hello Python world! Hello Python Crash Course world!
在程序中,可隨時(shí)修改變量的值,而 Python 將始終記錄變量的最新值。
2.2.1 變量的命名和使用
在 Python 中使用變量時(shí),需要遵守一些規(guī)則和指南。違反這些規(guī)則將引發(fā)錯(cuò)誤,而指南旨在讓你編寫的代碼更容易閱讀和理解。在使用變量時(shí),務(wù)必牢記下述規(guī)則。
·變量名只能包含字母、數(shù)字和下劃線1。變量名能以字母或下劃線打頭,但不能以數(shù)字打頭。例如,可將變量命名為 message_1,但不能將其命名為 1_message。
·變量名不能包含空格,但能使用下劃線來(lái)分隔其中的單詞。例如,變量名 greeting_message 可行,但變量名 greeting message 會(huì)引發(fā)錯(cuò)誤。
·不要將 Python 關(guān)鍵字和函數(shù)名用作變量名。例如,不要將 print 用作變量名,因?yàn)樗?Python 留作特殊用途(請(qǐng)參見附錄 A.4)。
·變量名應(yīng)既簡(jiǎn)短又具有描述性。例如,name 比 n 好,student_name 比 s_n 好,name_length 比 length_of_persons_name 好。
·慎用小寫字母 l 和大寫字母 O,因?yàn)樗鼈兛赡鼙蝗隋e(cuò)看成數(shù)字 1 和 0。
1 在 Python 3 中,變量名還可以包含其他 Unicode 字符。例如,中文字符也是支持的,但是不推薦?!幷咦?/p>
學(xué)習(xí)創(chuàng)建良好的變量名需要一定的實(shí)踐,特別是當(dāng)程序變得更加有趣和復(fù)雜的時(shí)候。隨著你編寫越來(lái)越多的程序,并開始閱讀別人編寫的代碼,你將越來(lái)越善于創(chuàng)建有意義的變量名。
注意:就目前而言,應(yīng)使用小寫的 Python 變量名。雖然在變量名中使用大寫字母不會(huì)導(dǎo)致錯(cuò)誤,但大寫字母在變量名中有特殊的含義,這將在本書后面討論。
2.2.2 如何在使用變量時(shí)避免命名錯(cuò)誤
程序員都會(huì)犯錯(cuò),而且大多數(shù)程序員每天都會(huì)犯錯(cuò)。雖然優(yōu)秀的程序員也會(huì)犯錯(cuò),但他們知道如何高效地排除錯(cuò)誤。下面來(lái)看一種你可能犯的錯(cuò)誤,并學(xué)習(xí)如何排除它。
我們將有意地編寫一些會(huì)引發(fā)錯(cuò)誤的代碼。請(qǐng)輸入下面的代碼,包括其中拼寫不正確、以粗體顯示的單詞 mesage:
message = "Hello Python Crash Course reader!" print(mesage)
當(dāng)程序存在錯(cuò)誤時(shí),Python 解釋器將竭盡所能地幫助你找出問(wèn)題所在。如果程序無(wú)法成功地運(yùn)行,解釋器將提供一個(gè) traceback。traceback 是一條記錄,指出了解釋器在嘗試運(yùn)行代碼時(shí),在什么地方陷入了困境。下面是當(dāng)你不小心錯(cuò)誤地拼寫了變量名時(shí),Python 解釋器提供的 traceback:
Traceback (most recent call last): ? File "hello_world.py", line 2, in <module> ? print(mesage) ^^^^^^ ? NameError: name 'mesage' is not defined. Did you mean: 'message'?
解釋器指出,文件 hello_world.py 的第二行存在錯(cuò)誤(見?)。它列出了這行代碼,旨在幫助你快速找出錯(cuò)誤(見?),并且指出了它發(fā)現(xiàn)的是什么樣的錯(cuò)誤(見?)。在這里,解釋器發(fā)現(xiàn)了一個(gè)名稱錯(cuò)誤,并報(bào)告打印的變量 mesage 未定義:Python 無(wú)法識(shí)別你提供的變量名。名稱錯(cuò)誤通常意味著兩種情況:要么在使用變量前忘記了給它賦值,要么在輸入變量名時(shí)拼寫不正確。在遇到不能識(shí)別的變量時(shí),Python 如果發(fā)現(xiàn)其名稱與另一個(gè)變量類似,將詢問(wèn)你指的是不是后者。
在這個(gè)示例中,第二行中的變量名 message 遺漏了字母 s。Python 解釋器不會(huì)對(duì)代碼做拼寫檢查,但要求變量名的拼寫一致。例如,如果在定義變量的地方也將 message 錯(cuò)誤地拼寫成了 mesage,結(jié)果將如何呢?
mesage = "Hello Python Crash Course reader!" print(mesage)
在這種情況下,程序?qū)⒊晒Φ剡\(yùn)行:
Hello Python Crash Course reader!
變量名是一致的,因此在 Python 看來(lái),這不是問(wèn)題。編程語(yǔ)言要求嚴(yán)格,但不關(guān)心拼寫是否正確。因此,在創(chuàng)建變量名和編寫代碼時(shí),無(wú)須考慮英語(yǔ)中的拼寫和語(yǔ)法規(guī)則。
很多編程錯(cuò)誤很簡(jiǎn)單,只是在程序的某一行輸錯(cuò)了一個(gè)字符。為了找出這種錯(cuò)誤而花費(fèi)很長(zhǎng)時(shí)間的大有人在。很多程序員天資聰穎、經(jīng)驗(yàn)豐富,卻會(huì)為找出這種細(xì)微的錯(cuò)誤花費(fèi)數(shù)小時(shí)時(shí)間。你大可對(duì)此冷嘲熱諷,但別忘了,你在編程生涯中,經(jīng)常會(huì)有同樣的遭遇。
2.2.3 變量是標(biāo)簽
變量常被描述為可用于存儲(chǔ)值的盒子。在你剛接觸變量時(shí),這種定義很有幫助,但它并沒有準(zhǔn)確地描述 Python 內(nèi)部表示變量的方式。一種好得多的定義是,變量是可以被賦值的標(biāo)簽,也可以說(shuō)變量指向特定的值。
在剛學(xué)習(xí)編程時(shí),這種差別對(duì)你而言可能意義不大,但越早知道越好。你遲早會(huì)遇到變量的行為出乎意料的情形,對(duì)變量的工作原理有準(zhǔn)確的認(rèn)識(shí),將有助于你明白代碼是如何運(yùn)行的。
注意:要理解新的編程概念,最佳方式是嘗試在程序中使用它們。如果你在完成本書的練習(xí)時(shí)陷入了困境,請(qǐng)嘗試做點(diǎn)兒其他的事情。如果這樣依然無(wú)法擺脫困境,請(qǐng)復(fù)習(xí)相關(guān)的內(nèi)容。如果此時(shí)情況依然如故,請(qǐng)參閱附錄 C 提供的建議。
動(dòng)手試一試
在完成下面的每個(gè)練習(xí)時(shí),都編寫一個(gè)獨(dú)立的程序。在保存每個(gè)程序時(shí),使用符合標(biāo)準(zhǔn) Python 約定的文件名:使用小寫字母和下劃線,如 simple_message.py 和 simple_messages.py。
練習(xí) 2.1:簡(jiǎn)單消息 將一條消息賦給變量,并將其打印出來(lái)。
練習(xí) 2.2:多條簡(jiǎn)單消息 將一條消息賦給變量,并將其打印出來(lái);再將變量的值修改為一條新消息,并將其打印出來(lái)。
- 數(shù)據(jù)庫(kù)系統(tǒng)原理及MySQL應(yīng)用教程(第2版)
- Android開發(fā)精要
- Instant Apache Stanbol
- Learning Neo4j 3.x(Second Edition)
- Raspberry Pi Home Automation with Arduino(Second Edition)
- Spring 5 Design Patterns
- C編程技巧:117個(gè)問(wèn)題解決方案示例
- Visual C++開發(fā)寶典
- Python Automation Cookbook
- Learning ECMAScript 6
- Ionic3與CodePush初探:支持跨平臺(tái)與熱更新的App開發(fā)技術(shù)
- ArcPy and ArcGIS(Second Edition)
- Mastering R for Quantitative Finance
- Visual Basic程序設(shè)計(jì)
- Server Side development with Node.js and Koa.js Quick Start Guide