- Python編程:從入門到實(shí)踐(第3版)
- (美)埃里克·馬瑟斯
- 2035字
- 2025-05-26 17:39:30
2.2 變量
下面來嘗試在 hello_world.py 中使用一個(gè)變量。在這個(gè)文件開頭添加一行代碼,并對第二行代碼進(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)起來;在處理第二行代碼時(shí),它將與變量 message 關(guān)聯(lián)的值打印到屏幕上。
下面來進(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。
·變量名不能包含空格,但能使用下劃線來分隔其中的單詞。例如,變量名 greeting_message 可行,但變量名 greeting message 會(huì)引發(fā)錯(cuò)誤。
·不要將 Python 關(guān)鍵字和函數(shù)名用作變量名。例如,不要將 print 用作變量名,因?yàn)樗?Python 留作特殊用途(請參見附錄 A.4)。
·變量名應(yīng)既簡短又具有描述性。例如,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í)候。隨著你編寫越來越多的程序,并開始閱讀別人編寫的代碼,你將越來越善于創(chuàng)建有意義的變量名。
注意:就目前而言,應(yīng)使用小寫的 Python 變量名。雖然在變量名中使用大寫字母不會(huì)導(dǎo)致錯(cuò)誤,但大寫字母在變量名中有特殊的含義,這將在本書后面討論。
2.2.2 如何在使用變量時(shí)避免命名錯(cuò)誤
程序員都會(huì)犯錯(cuò),而且大多數(shù)程序員每天都會(huì)犯錯(cuò)。雖然優(yōu)秀的程序員也會(huì)犯錯(cuò),但他們知道如何高效地排除錯(cuò)誤。下面來看一種你可能犯的錯(cuò)誤,并學(xué)習(xí)如何排除它。
我們將有意地編寫一些會(huì)引發(fā)錯(cuò)誤的代碼。請輸入下面的代碼,包括其中拼寫不正確、以粗體顯示的單詞 mesage:
message = "Hello Python Crash Course reader!" print(mesage)
當(dāng)程序存在錯(cuò)誤時(shí),Python 解釋器將竭盡所能地幫助你找出問題所在。如果程序無法成功地運(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 無法識(shí)別你提供的變量名。名稱錯(cuò)誤通常意味著兩種情況:要么在使用變量前忘記了給它賦值,要么在輸入變量名時(shí)拼寫不正確。在遇到不能識(shí)別的變量時(shí),Python 如果發(fā)現(xiàn)其名稱與另一個(gè)變量類似,將詢問你指的是不是后者。
在這個(gè)示例中,第二行中的變量名 message 遺漏了字母 s。Python 解釋器不會(huì)對代碼做拼寫檢查,但要求變量名的拼寫一致。例如,如果在定義變量的地方也將 message 錯(cuò)誤地拼寫成了 mesage,結(jié)果將如何呢?
mesage = "Hello Python Crash Course reader!" print(mesage)
在這種情況下,程序?qū)⒊晒Φ剡\(yùn)行:
Hello Python Crash Course reader!
變量名是一致的,因此在 Python 看來,這不是問題。編程語言要求嚴(yán)格,但不關(guān)心拼寫是否正確。因此,在創(chuàng)建變量名和編寫代碼時(shí),無須考慮英語中的拼寫和語法規(guī)則。
很多編程錯(cuò)誤很簡單,只是在程序的某一行輸錯(cuò)了一個(gè)字符。為了找出這種錯(cuò)誤而花費(fèi)很長時(shí)間的大有人在。很多程序員天資聰穎、經(jīng)驗(yàn)豐富,卻會(huì)為找出這種細(xì)微的錯(cuò)誤花費(fèi)數(shù)小時(shí)時(shí)間。你大可對此冷嘲熱諷,但別忘了,你在編程生涯中,經(jīng)常會(huì)有同樣的遭遇。
2.2.3 變量是標(biāo)簽
變量常被描述為可用于存儲(chǔ)值的盒子。在你剛接觸變量時(shí),這種定義很有幫助,但它并沒有準(zhǔn)確地描述 Python 內(nèi)部表示變量的方式。一種好得多的定義是,變量是可以被賦值的標(biāo)簽,也可以說變量指向特定的值。
在剛學(xué)習(xí)編程時(shí),這種差別對你而言可能意義不大,但越早知道越好。你遲早會(huì)遇到變量的行為出乎意料的情形,對變量的工作原理有準(zhǔn)確的認(rèn)識(shí),將有助于你明白代碼是如何運(yùn)行的。
注意:要理解新的編程概念,最佳方式是嘗試在程序中使用它們。如果你在完成本書的練習(xí)時(shí)陷入了困境,請嘗試做點(diǎn)兒其他的事情。如果這樣依然無法擺脫困境,請復(fù)習(xí)相關(guān)的內(nèi)容。如果此時(shí)情況依然如故,請參閱附錄 C 提供的建議。
動(dòng)手試一試
在完成下面的每個(gè)練習(xí)時(shí),都編寫一個(gè)獨(dú)立的程序。在保存每個(gè)程序時(shí),使用符合標(biāo)準(zhǔn) Python 約定的文件名:使用小寫字母和下劃線,如 simple_message.py 和 simple_messages.py。
練習(xí) 2.1:簡單消息 將一條消息賦給變量,并將其打印出來。
練習(xí) 2.2:多條簡單消息 將一條消息賦給變量,并將其打印出來;再將變量的值修改為一條新消息,并將其打印出來。
- 程序員面試筆試寶典(第3版)
- Learn TypeScript 3 by Building Web Applications
- The Android Game Developer's Handbook
- Designing Hyper-V Solutions
- Swift 3 New Features
- Python金融數(shù)據(jù)分析
- Python機(jī)器學(xué)習(xí)實(shí)戰(zhàn)
- Kotlin從基礎(chǔ)到實(shí)戰(zhàn)
- Create React App 2 Quick Start Guide
- Node.js:來一打 C++ 擴(kuò)展
- 一塊面包板玩轉(zhuǎn)Arduino編程
- Visual Basic 6.0程序設(shè)計(jì)實(shí)驗(yàn)教程
- Java程序設(shè)計(jì)與項(xiàng)目案例教程
- 大話代碼架構(gòu):項(xiàng)目實(shí)戰(zhàn)版
- 前端架構(gòu)設(shè)計(jì)