免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
第 2 章 變量和簡單數(shù)據(jù)類型

 在本章中,你將學(xué)習(xí)可在Python程序中使用的各種數(shù)據(jù),還將學(xué)習(xí)如何在程序中使用變量來表示這些數(shù)據(jù)。

視頻講解

2.1 運行hello_world.py時發(fā)生的情況

運行hello_world.py時,Python都做了些什么呢?下面來深入研究一下。實際上,即便是運行簡單的程序,Python所做的工作也相當(dāng)多:

hello_world.py

print("Hello Python world!")

運行上述代碼時,你將看到如下輸出:

Hello Python world!

運行文件hello_world.py時,末尾的.py指出這是一個Python程序,因此編輯器將使用Python解釋器來運行它。Python解釋器讀取整個程序,確定其中每個單詞的含義。例如,看到后面跟著圓括號的單詞print時,解釋器就將圓括號中的內(nèi)容打印到屏幕。

編寫程序時,編輯器會以各種方式突出程序的不同部分。例如,它知道print()是一個函數(shù)的名稱,因此將其顯示為某種顏色;它知道"Hello Python world!"不是Python代碼,因此將其顯示為另一種顏色。這種功能稱為語法高亮,在你剛開始編寫程序時很有幫助。

2.2 變量

下面來嘗試在hello_world.py中使用一個變量。在這個文件開頭添加一行代碼,并對第二行代碼進(jìn)行修改,如下所示:

hello_world.py

message = "Hello Python world!"print(message)

運行這個程序,看看結(jié)果如何。你會發(fā)現(xiàn),輸出與以前相同:

Hello Python world!

我們添加了一個名為message變量。每個變量都指向一個——與該變量相關(guān)聯(lián)的信息。在這里,指向的值為文本"Hello Python world!"。

添加變量導(dǎo)致Python解釋器需要做更多工作。處理第一行代碼時,它將變量message與文本"Hello Python world!"關(guān)聯(lián)起來;處理第二行代碼時,它將與變量message關(guān)聯(lián)的值打印到屏幕。

下面來進(jìn)一步擴(kuò)展這個程序:修改hello_world.py,使其再打印一條消息。為此,在hello_world.py中添加一個空行,再添加下面兩行代碼:

message = "Hello Python world!"print(message)message = "Hello Python Crash Course world!"print(message)

現(xiàn)在如果運行這個程序,將看到兩行輸出:

Hello Python world!
Hello Python Crash Course world!

在程序中可隨時修改變量的值,而Python將始終記錄變量的最新值。

2.2.1 變量的命名和使用

在Python中使用變量時,需要遵守一些規(guī)則和指南。違反這些規(guī)則將引發(fā)錯誤,而指南旨在讓你編寫的代碼更容易閱讀和理解。請務(wù)必牢記下述有關(guān)變量的規(guī)則。

  • 變量名只能包含字母、數(shù)字和下劃線。變量名能以字母或下劃線打頭,但不能以數(shù)字打頭。例如,可將變量命名為message_1,但不能將其命名為1_message。

  • 變量名不能包含空格,但能使用下劃線來分隔其中的單詞。例如,變量名greeting_message可行,但變量名greeting message會引發(fā)錯誤。

  • 不要將Python關(guān)鍵字和函數(shù)名用作變量名,即不要使用Python保留用于特殊用途的單詞,如print(請參見附錄A.4)。

  • 變量名應(yīng)既簡短又具有描述性。例如,namen好,student_names_n好,name_lengthlength_of_persons_name好。

  • 慎用小寫字母l和大寫字母O,因為它們可能被人錯看成數(shù)字10。

要創(chuàng)建良好的變量名,需要經(jīng)過一定的實踐,在程序復(fù)雜而有趣時尤其如此。隨著編寫的程序越來越多,并開始閱讀別人編寫的代碼,你將越來越善于創(chuàng)建有意義的變量名。

注意 就目前而言,應(yīng)使用小寫的Python變量名。雖然在變量名中使用大寫字母不會導(dǎo)致錯誤,但是大寫字母在變量名中有特殊含義,這將在本書后面討論。

2.2.2 使用變量時避免命名錯誤

程序員都會犯錯,而且大多數(shù)程序員每天都會犯錯。雖然優(yōu)秀的程序員也會犯錯,但他們也知道如何高效地消除錯誤。下面來看一種你可能犯的錯誤,并學(xué)習(xí)如何消除它。

我們將有意地編寫一些引發(fā)錯誤的代碼。請輸入下面的代碼,包括其中拼寫不正確、以粗體顯示的單詞mesage

message = "Hello Python Crash Course reader!"print(mesage)

程序存在錯誤時,Python解釋器將竭盡所能地幫助你找出問題所在。程序無法成功運行時,解釋器將提供一個traceback。traceback是一條記錄,指出了解釋器嘗試運行代碼時,在什么地方陷入了困境。下面是你不小心錯誤地拼寫了變量名時,Python解釋器提供的traceback:

Traceback (most recent call last):
  File "hello_world.py", line 2, in <module> ?    print(mesage) ?
NameError: name 'mesage' is not defined ?

解釋器指出,文件hello_world.py的第二行存在錯誤(見?)。它列出了這行代碼,旨在幫助你快速找出錯誤(見?),還指出了它發(fā)現(xiàn)的是什么樣的錯誤(見?)。在這里,解釋器發(fā)現(xiàn)了一個名稱錯誤,并報告打印的變量mesage未定義:Python無法識別你提供的變量名。名稱錯誤通常意味著兩種情況:要么是使用變量前忘記給它賦值,要么是輸入變量名時拼寫不正確。

在這個示例中,第二行的變量名message遺漏了字母s。Python解釋器不會對代碼做拼寫檢查,但要求變量名的拼寫一致。例如,如果在代碼的另一個地方也將message錯誤地拼寫成了mesage,結(jié)果將如何呢?

mesage = "Hello Python Crash Course reader!"print(mesage)

在這種情況下,程序?qū)⒊晒\行!

Hello Python Crash Course reader!

編程語言要求嚴(yán)格,但并不關(guān)心拼寫是否正確。因此,創(chuàng)建變量名和編寫代碼時,無須考慮英語中的拼寫和語法規(guī)則。

很多編程錯誤都簡單,只是在程序的某一行輸錯了一個字符。為找出這種錯誤而花費很長時間的大有人在。很多程序員天資聰穎、經(jīng)驗豐富,卻為找出這種細(xì)微的錯誤花費數(shù)小時。你可能覺得這很好笑,但別忘了,在你的編程生涯中,經(jīng)常會有同樣的遭遇。

2.2.3 變量是標(biāo)簽

變量常被描述為可用于存儲值的盒子。在你剛接觸變量時,這種定義可能很有幫助,但它并沒有準(zhǔn)確描述Python內(nèi)部表示變量的方式。一種好得多的定義是,變量是可以賦給值的標(biāo)簽,也可以說變量指向特定的值。

剛學(xué)習(xí)編程時,這種差別可能意義不大,但越早知道越好。你遲早會遇到變量的行為出乎意料的情形,此時如果對變量的工作原理有準(zhǔn)確的認(rèn)識,將有助于搞清楚代碼是如何運行的。

注意 要理解新的編程概念,最佳的方式是嘗試在程序中使用它們。如果你在完成本書的練習(xí)時陷入了困境,請嘗試做點其他的事情。如果這樣做后依然無法擺脫困境,請復(fù)習(xí)相關(guān)內(nèi)容。如果這樣做后情況依然如故,請參閱附錄C的建議。

動手試一試

在完成下面的每個練習(xí)時,都編寫一個獨立的程序。保存每個程序時,使用符合標(biāo)準(zhǔn)Python約定的文件名:使用小寫字母和下劃線,如simple_message.py和simple_messages.py。

練習(xí)2-1:簡單消息 將一條消息賦給變量,并將其打印出來。

練習(xí)2-2:多條簡單消息 將一條消息賦給變量,并將其打印出來;再將變量的值修改為一條新消息,并將其打印出來。

2.3 字符串

大多數(shù)程序定義并收集某種數(shù)據(jù),然后使用它們來做些有意義的事情。有鑒于此,對數(shù)據(jù)進(jìn)行分類大有裨益。我們將介紹的第一種數(shù)據(jù)類型是字符串。字符串雖然看似簡單,但能夠以很多不同的方式使用。

字符串就是一系列字符。在Python中,用引號括起的都是字符串,其中的引號可以是單引號,也可以是雙引號,如下所示:

"This is a string."'This is also a string.'

這種靈活性讓你能夠在字符串中包含引號和撇號:

'I told my friend, "Python is my favorite language!"'"The language 'Python' is named after Monty Python, not the snake.""One of Python's strengths is its diverse and supportive community."

下面來看一些使用字符串的方式。

2.3.1 使用方法修改字符串的大小寫

對于字符串,可執(zhí)行的最簡單的操作之一是修改其中單詞的大小寫。請看下面的代碼,并嘗試判斷其作用:

name.py

name = "ada lovelace"print(name.title())

將這個文件保存為name.py,再運行它。你將看到如下輸出:

Ada Lovelace

在這個示例中,變量name指向小寫的字符串"ada lovelace"。在函數(shù)調(diào)用print()中,方法title()出現(xiàn)在這個變量的后面。方法是Python可對數(shù)據(jù)執(zhí)行的操作。在name.title()中,name后面的句點(.)讓Python對變量name執(zhí)行方法title()指定的操作。每個方法后面都跟著一對圓括號,這是因為方法通常需要額外的信息來完成其工作。這種信息是在圓括號內(nèi)提供的。函數(shù)title()不需要額外的信息,因此它后面的圓括號是空的。

方法title()以首字母大寫的方式顯示每個單詞,即將每個單詞的首字母都改為大寫。這很有用,因為你經(jīng)常需要將名字視為信息。例如,你可能希望程序?qū)⒅?code style="box-sizing: inherit; border-width: 0px; border-color: rgb(218, 225, 231); border-style: solid; font-family: monospace, monospace; font-size: 1em;">Ada、ADAada視為同一個名字,并將它們都顯示為Ada。

還有其他幾個很有用的大小寫處理方法。例如,要將字符串改為全部大寫或全部小寫,可以像下面這樣做:

name = "Ada Lovelace"print(name.upper())print(name.lower())

這些代碼的輸出如下:

ADA LOVELACE
ada lovelace

存儲數(shù)據(jù)時,方法lower()很有用。很多時候,你無法依靠用戶來提供正確的大小寫,因此需要將字符串先轉(zhuǎn)換為小寫,再存儲它們。以后需要顯示這些信息時,再將其轉(zhuǎn)換為最合適的大小寫方式。

2.3.2 在字符串中使用變量

在有些情況下,你可能想在字符串中使用變量的值。例如,你可能想使用兩個變量分別表示名和姓,然后合并這兩個值以顯示姓名:

full_name.py

first_name = "ada"last_name = "lovelace"full_name = f"{first_name} {last_name}" ?
print(full_name)

要在字符串中插入變量的值,可在前引號前加上字母f(見?),再將要插入的變量放在花括號內(nèi)。這樣,當(dāng)Python顯示字符串時,將把每個變量都替換為其值。

這種字符串名為f字符串。f是format(設(shè)置格式)的簡寫,因為Python通過把花括號內(nèi)的變量替換為其值來設(shè)置字符串的格式。上述代碼的輸出如下:

ada lovelace

使用f字符串可完成很多任務(wù),如利用與變量關(guān)聯(lián)的信息來創(chuàng)建完整的消息,如下所示:

first_name = "ada"last_name = "lovelace"full_name = f"{first_name} {last_name}"print(f"Hello, {full_name.title()}!") ?

在這里,一個問候用戶的句子中使用了完整的姓名(見?),并使用方法title()來將姓名設(shè)置為合適的格式。這些代碼顯示一條格式良好的簡單問候語:

Hello, Ada Lovelace!

還可以使用f字符串來創(chuàng)建消息,再把整條消息賦給變量:

first_name = "ada"last_name = "lovelace"full_name = f"{first_name} {last_name}"message = f"Hello, {full_name.title()}!" ?
print(message) ?

上述代碼也顯示消息Hello, Ada Lovelace!,但將這條消息賦給了一個變量(見?),這讓最后的函數(shù)調(diào)用print()變得簡單得多(見?)。

注意 f字符串是Python 3.6引入的。如果你使用的是Python 3.5或更早的版本,需要使用format()方法,而非這種f語法。要使用方法format(),可在圓括號內(nèi)列出要在字符串中使用的變量。對于每個變量,都通過一對花括號來引用。這樣將按順序?qū)⑦@些花括號替換為圓括號內(nèi)列出的變量的值,如下所示:

full_name = "{} {}".format(first_name, last_name)

2.3.3 使用制表符或換行符來添加空白

在編程中,空白泛指任何非打印字符,如空格、制表符和換行符。你可以使用空白來組織輸出,讓用戶閱讀起來更容易。

要在字符串中添加制表符,可使用字符組合\t,如下述代碼的?處所示:

>>> print("Python")Python>>> print("\tPython") ?
    Python

要在字符串中添加換行符,可使用字符組合\n

>>> print("Languages:\nPython\nC\nJavaScript")Languages:PythonCJavaScript

還可在同一個字符串中同時包含制表符和換行符。字符串"\n\t"讓Python換到下一行,并在下一行開頭添加一個制表符。下面的示例演示了如何使用一個單行字符串來生成四行輸出:

>>> print("Languages:\n\tPython\n\tC\n\tJavaScript")Languages:    Python
    C
    JavaScript

在接下來的兩章中,你將使用為數(shù)不多的幾行代碼來生成很多行輸出,屆時制表符和換行符將提供極大的幫助。

2.3.4 刪除空白

在程序中,額外的空白可能令人迷惑。對程序員來說,'python''python '看起來幾乎沒什么兩樣,但對程序來說,它們卻是兩個不同的字符串。Python能夠發(fā)現(xiàn)'python '中額外的空白,并認(rèn)為它意義重大——除非你告訴它不是這樣的。

空白很重要,因為你經(jīng)常需要比較兩個字符串是否相同。一個重要的示例是,在用戶登錄網(wǎng)站時檢查其用戶名。不過在非常簡單的情形下,額外的空格也可能令人迷惑。所幸,在Python中刪除用戶輸入數(shù)據(jù)中的多余空白易如反掌。

Python能夠找出字符串開頭和末尾多余的空白。要確保字符串末尾沒有空白,可使用方法rstrip()。

>>> favorite_language = 'python ' ?>>> favorite_language ?'python '>>> favorite_language.rstrip() ?'python'>>> favorite_language ?'python '

與變量favorite_language相關(guān)聯(lián)的字符串末尾有多余的空白(見?)。你在終端會話中向Python詢問這個變量的值時,可看到末尾的空格(見?)。對變量favorite_language調(diào)用方法rstrip()后(見?),這個多余的空格被刪除了。然而,這種刪除只是暫時的,接下來再次詢問favorite_language的值時,你會發(fā)現(xiàn)這個字符串與輸入時一樣,依然包含多余的空白(見?)。

要永久刪除這個字符串中的空白,必須將刪除操作的結(jié)果關(guān)聯(lián)到變量:

>>> favorite_language = 'python '>>> favorite_language = favorite_language.rstrip() ?>>> favorite_language'python'

為刪除這個字符串中的空白,要將其末尾的空白剔除,再將結(jié)果關(guān)聯(lián)到原來的變量(見?)。在編程中,經(jīng)常需要修改變量的值,再將新值關(guān)聯(lián)到原來的變量。這就是變量的值可能隨程序的運行或用戶輸入數(shù)據(jù)而發(fā)生變化的原因所在。

你還可以剔除字符串開頭的空白,或者同時剔除字符串兩邊的空白。為此,可分別使用方法lstrip()strip()

>>> favorite_language = ' python ' ?>>> favorite_language.rstrip() ?' python'>>> favorite_language.lstrip() ?'python '>>> favorite_language.strip() ?'python'

在這個示例中,我們首先創(chuàng)建了一個開頭和末尾都有空白的字符串(見?)。接下來,分別刪除末尾(見?)、開頭(見?)和兩邊(見?)的空白。嘗試使用這些剝除函數(shù)有助于你熟悉字符串操作。在實際程序中,這些剝除函數(shù)最常用于在存儲用戶輸入前對其進(jìn)行清理。

2.3.5 使用字符串時避免語法錯誤

語法錯誤是一種你時不時會遇到的錯誤。程序中包含非法的Python代碼時,就會導(dǎo)致語法錯誤。例如,在用單引號括起的字符串中,如果包含撇號,就將導(dǎo)致錯誤。這是因為這會導(dǎo)致Python將第一個單引號和撇號之間的內(nèi)容視為一個字符串,進(jìn)而將余下的文本視為Python代碼,從而引發(fā)錯誤。

下面演示了如何正確地使用單引號和雙引號。請將該程序保存為apostrophe.py,再運行它:

apostrophe.py

message = "One of Python's strengths is its diverse community."print(message)

撇號位于兩個雙引號之間,因此Python解釋器能夠正確地理解這個字符串:

One of Python's strengths is its diverse community.

然而,如果使用單引號,Python將無法正確地確定字符串的結(jié)束位置:

message = 'One of Python's strengths is its diverse community.'
print(message)

你將看到如下輸出:

File "apostrophe.py", line 1
  message = 'One of Python's strengths is its diverse community.'
                            ^?
SyntaxError: invalid syntax

從上述輸出可知,錯誤發(fā)生在第二個單引號后面(見?)。這種語法錯誤表明,在解釋器看來,其中的有些內(nèi)容不是有效的Python代碼。錯誤的原因各種各樣,我將指出一些常見的原因。學(xué)習(xí)編寫Python代碼時,你可能會經(jīng)常遇到語法錯誤。語法錯誤也是最不具體的錯誤類型,因此可能難以找出并修復(fù)。受困于非常棘手的錯誤時,請參閱附錄C提供的建議。

注意 編寫程序時,編輯器的語法高亮功能可幫助你快速找出某些語法錯誤??吹絇ython代碼以普通句子的顏色顯示,或者普通句子以Python代碼的顏色顯示時,就可能意味著文件中存在引號不匹配的情況。

動手試一試

完成下面的每個練習(xí)時,都編寫一個獨立的程序,并將其保存為名稱類似于name_cases.py的文件。如果遇到了困難,請休息一會兒或參閱附錄C提供的建議。

練習(xí)2-3:個性化消息 用變量表示一個人的名字,并向其顯示一條消息。顯示的消息應(yīng)非常簡單,下面是一個例子。

Hello Eric, would you like to learn some Python today?

練習(xí)2-4:調(diào)整名字的大小寫 用變量表示一個人的名字,再以小寫、大寫和首字母大寫的方式顯示這個人名。

練習(xí)2-5:名言 找一句你欽佩的名人說的名言,將其姓名和名言打印出來。輸出應(yīng)類似于下面這樣(包括引號)。

Albert Einstein once said, “A person who never made a mistake never tried anything new.”

練習(xí)2-6:名言2 重復(fù)練習(xí)2-5,但用變量famous_person表示名人的姓名,再創(chuàng)建要顯示的消息并將其賦給變量message,然后打印這條消息。

練習(xí)2-7:剔除人名中的空白 用變量表示一個人的名字,并在其開頭和末尾都包含一些空白字符。務(wù)必至少使用字符組合"\t""\n"各一次。

打印這個人名,顯示其開頭和末尾的空白。然后,分別使用剔除函數(shù)lstrip()rstrip()strip()對人名進(jìn)行處理,并將結(jié)果打印出來。

2.4 數(shù)

在編程中,經(jīng)常使用數(shù)來記錄得分、表示可視化數(shù)據(jù)、存儲Web應(yīng)用信息,等等。Python能根據(jù)數(shù)的用法以不同的方式處理它們。鑒于整數(shù)使用起來最簡單,下面就先來看看Python是如何管理它們的。

2.4.1 整數(shù)

在Python中,可對整數(shù)執(zhí)行加(+)減(-)乘(*)除(/)運算。

>>> 2 + 35>>> 3 - 21>>> 2 * 36>>> 3 / 21.5

在終端會話中,Python直接返回運算結(jié)果。Python使用兩個乘號表示乘方運算:

>>> 3 ** 29>>> 3 ** 327>>> 10 ** 61000000

Python還支持運算次序,因此可在同一個表達(dá)式中使用多種運算。還可以使用圓括號來修改運算次序,讓Python按你指定的次序執(zhí)行運算,如下所示:

>>> 2 + 3*414>>> (2 + 3) * 420

在這些示例中,空格不影響Python計算表達(dá)式的方式。它們的存在旨在讓你在閱讀代碼時能迅速確定先執(zhí)行哪些運算。

2.4.2 浮點數(shù)

Python將所有帶小數(shù)點的數(shù)稱為浮點數(shù)。大多數(shù)編程語言使用了這個術(shù)語,它指出了這樣一個事實:小數(shù)點可出現(xiàn)在數(shù)的任何位置。每種編程語言都必須細(xì)心設(shè)計,以妥善地處理浮點數(shù),確保不管小數(shù)點出現(xiàn)在什么位置,數(shù)的行為都是正常的。

從很大程度上說,使用浮點數(shù)時無須考慮其行為。你只需輸入要使用的數(shù),Python通常會按你期望的方式處理它們:

>>> 0.1 + 0.10.2>>> 0.2 + 0.20.4>>> 2 * 0.10.2>>> 2 * 0.20.4

但需要注意的是,結(jié)果包含的小數(shù)位數(shù)可能是不確定的:

>>> 0.2 + 0.10.30000000000000004>>> 3 * 0.10.30000000000000004

所有語言都存在這種問題,沒有什么可擔(dān)心的。Python會盡力找到一種精確表示結(jié)果的方法,但鑒于計算機(jī)內(nèi)部表示數(shù)的方式,這在有些情況下很難。就現(xiàn)在而言,暫時忽略多余的小數(shù)位數(shù)即可。在第二部分的項目中,你將在需要時學(xué)習(xí)處理多余小數(shù)位的方式。

2.4.3 整數(shù)和浮點數(shù)

將任意兩個數(shù)相除時,結(jié)果總是浮點數(shù),即便這兩個數(shù)都是整數(shù)且能整除:

>>> 4/22.0

在其他任何運算中,如果一個操作數(shù)是整數(shù),另一個操作數(shù)是浮點數(shù),結(jié)果也總是浮點數(shù):

>>> 1 + 2.03.0>>> 2 * 3.06.0>>> 3.0 ** 29.0

無論是哪種運算,只要有操作數(shù)是浮點數(shù),Python默認(rèn)得到的總是浮點數(shù),即便結(jié)果原本為整數(shù)也是如此。

2.4.4 數(shù)中的下劃線

書寫很大的數(shù)時,可使用下劃線將其中的數(shù)字分組,使其更清晰易讀:

>>> universe_age = 14_000_000_000

當(dāng)你打印這種使用下劃線定義的數(shù)時,Python不會打印其中的下劃線:

>>> print(universe_age)14000000000

這是因為存儲這種數(shù)時,Python會忽略其中的下劃線。將數(shù)字分組時,即便不是將每三位分成一組,也不會影響最終的值。在Python看來,10001_000沒什么不同,1_00010_00也沒什么不同。這種表示法適用于整數(shù)和浮點數(shù),但只有Python 3.6和更高的版本支持。

2.4.5 同時給多個變量賦值

可在一行代碼中給多個變量賦值,這有助于縮短程序并提高其可讀性。這種做法最常用于將一系列數(shù)賦給一組變量。

例如,下面演示了如何將變量x、yz都初始化為零:

>>> x, y, z = 0, 0, 0

這樣做時,需要用逗號將變量名分開;對于要賦給變量的值,也需同樣處理。Python將按順序?qū)⒚總€值賦給對應(yīng)的變量。只要變量和值的個數(shù)相同,Python就能正確地將它們關(guān)聯(lián)起來。

2.4.6 常量

常量類似于變量,但其值在程序的整個生命周期內(nèi)保持不變。Python沒有內(nèi)置的常量類型,但Python程序員會使用全大寫來指出應(yīng)將某個變量視為常量,其值應(yīng)始終不變:

MAX_CONNECTIONS = 5000

在代碼中,要指出應(yīng)將特定的變量視為常量,可將其字母全部大寫。

動手試一試

練習(xí)2-8:數(shù)字8 編寫四個表達(dá)式,分別使用加法、減法、乘法和除法運算,但結(jié)果都是數(shù)字8。為使用函數(shù)調(diào)用print()來顯示結(jié)果,務(wù)必將這些表達(dá)式用圓括號括起來。也就是說,你應(yīng)該編寫四行類似于下面的代碼:

print(5+3)

輸出應(yīng)為四行,其中每行都只包含數(shù)字8。

練習(xí)2-9:最喜歡的數(shù) 用一個變量來表示你最喜歡的數(shù),再使用這個變量創(chuàng)建一條消息,指出你最喜歡的數(shù)是什么,然后將這條消息打印出來。

2.5 注釋

在大多數(shù)編程語言中,注釋是一項很有用的功能。本書前面編寫的程序中都只包含Python代碼,但隨著程序越來越大、越來越復(fù)雜,就應(yīng)在其中添加說明,對你解決問題的方法進(jìn)行大致的闡述。注釋讓你能夠使用自然語言在程序中添加說明。

2.5.1 如何編寫注釋

在Python中,注釋用井號(#)標(biāo)識。井號后面的內(nèi)容都會被Python解釋器忽略,如下所示:

comment.py

# 向大家問好。print("Hello Python people!")

Python解釋器將忽略第一行,只執(zhí)行第二行。

Hello Python people!

2.5.2 該編寫什么樣的注釋

編寫注釋的主要目的是闡述代碼要做什么,以及是如何做的。在開發(fā)項目期間,你對各個部分如何協(xié)同工作了如指掌,但過段時間后,有些細(xì)節(jié)你可能不記得了。當(dāng)然,你總是可以通過研究代碼來確定各個部分的工作原理,但通過編寫注釋以清晰的自然語言對解決方案進(jìn)行概述,可節(jié)省很多時間。

要成為專業(yè)程序員或與其他程序員合作,就必須編寫有意義的注釋。當(dāng)前,大多數(shù)軟件是合作編寫的,編寫者可能是同一家公司的多名員工,也可能是眾多致力于同一個開源項目的人員。訓(xùn)練有素的程序員都希望代碼中包含注釋,因此你最好從現(xiàn)在開始就在程序中添加描述性注釋。作為新手,最值得養(yǎng)成的習(xí)慣之一就是在代碼中編寫清晰、簡潔的注釋。

如果不確定是否要編寫注釋,就問問自己:在找到合理的解決方案之前,考慮了多個解決方案嗎?如果答案是肯定的,就編寫注釋對你的解決方案進(jìn)行說明吧。相比回過頭去再添加注釋,刪除多余的注釋要容易得多。從現(xiàn)在開始,本書的示例都將使用注釋來闡述代碼的工作原理。

動手試一試

練習(xí)2-10:添加注釋 選擇你編寫的兩個程序,在每個程序中至少添加一條注釋。如果程序太簡單,實在沒有什么需要說明的,就在程序文件開頭加上你的姓名和當(dāng)前日期,再用一句話闡述程序的功能。

2.6 Python之禪

經(jīng)驗豐富的程序員倡導(dǎo)盡可能避繁就簡。Python社區(qū)的理念都包含在Tim Peters撰寫的“Python之禪”中。要獲悉這些有關(guān)編寫優(yōu)秀Python代碼的指導(dǎo)原則,只需在解釋器中執(zhí)行命令import this。這里不打算贅述整個“Python之禪”,而只與大家分享其中的幾條原則,讓你明白為何它們對Python新手來說至關(guān)重要。

>>> import thisThe Zen of Python, by Tim Peters
Beautiful is better than ugly.

Python程序員篤信代碼可以編寫得漂亮而優(yōu)雅。編程是要解決問題的,設(shè)計良好、高效而漂亮的解決方案都會讓程序員心生敬意。隨著你對Python的認(rèn)識越來越深入,并使用它來編寫越來越多的代碼,有一天也許會有人站在你后面驚呼:“哇,代碼編寫得真是漂亮!”

Simple is better than complex.

如果有兩個解決方案,一個簡單、一個復(fù)雜,但都行之有效,就選擇簡單的解決方案吧。這樣,你編寫的代碼將更容易維護(hù),你或他人以后改進(jìn)這些代碼時也會更容易。

Complex is better than complicated.

現(xiàn)實是復(fù)雜的,有時候可能沒有簡單的解決方案。在這種情況下,就選擇最簡單可行的解決方案吧。

Readability counts.

即便是復(fù)雜的代碼,也要讓它易于理解。開發(fā)的項目涉及復(fù)雜代碼時,一定要為這些代碼編寫有益的注釋。

There should be one-- and preferably only one --obvious way to do it.

如果讓兩名Python程序員去解決同一個問題,他們提供的解決方案應(yīng)大致相同。這并不是說編程沒有創(chuàng)意空間,而是恰恰相反!然而,大部分編程工作是使用常見解決方案來解決簡單的小問題,但這些小問題都包含在更龐大、更有創(chuàng)意空間的項目中。在你的程序中,各種具體細(xì)節(jié)對其他Python程序員來說都應(yīng)易于理解。

Now is better than never.

你可以用余生來學(xué)習(xí)Python和編程的紛繁難懂之處,但這樣你什么項目都完不成。不要企圖編寫完美無缺的代碼,而是要先編寫行之有效的代碼,再決定是對其做進(jìn)一步改進(jìn),還是轉(zhuǎn)而去編寫新代碼。

等你進(jìn)入下一章,開始研究更復(fù)雜的主題時,務(wù)必牢記這種簡約而清晰的理念。如此,經(jīng)驗豐富的程序員定將對你編寫的代碼心生敬意,進(jìn)而樂意向你提供反饋,并與你合作開發(fā)有趣的項目。

動手試一試

練習(xí)2-11:Python之禪 在Python終端會話中執(zhí)行命令import this,并粗略地瀏覽一下其他的指導(dǎo)原則。

2.7 小結(jié)

在本章中,你學(xué)習(xí)了:如何使用變量;如何創(chuàng)建描述性變量名以及如何消除名稱錯誤和語法錯誤;字符串是什么,以及如何使用小寫、大寫和首字母大寫方式顯示字符串;使用空白來顯示整潔的輸出,以及如何剔除字符串中多余的空白;如何使用整數(shù)和浮點數(shù);一些使用數(shù)值數(shù)據(jù)的方式。你還學(xué)習(xí)了如何編寫說明性注釋,讓代碼對你和其他人來說更容易理解。最后,你了解了讓代碼盡可能簡單的理念。

在第3章,你將學(xué)習(xí)如何在被稱為列表的變量中存儲一系列信息,以及如何通過遍歷列表來操作其中的信息。

上一章

第 1 章 起步

下一章

第 3 章 列表簡介

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
2019最新Python3:基礎(chǔ)語法
Python基礎(chǔ)教程-獲取用戶輸入、函數(shù)與注釋
python練習(xí):復(fù)習(xí)符號
Java初學(xué)者福利——Java語法基礎(chǔ)
原來學(xué)Python最好的書是這一本?它在bookauthority里排名第三
《計算機(jī)二級Python語言程序設(shè)計考試》第2章: Python語言基本語法元素
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服