- 寫給程序員的Python教程
- (挪)羅伯特·斯莫爾希雷 (美)奧斯汀·賓厄姆
- 1085字
- 2020-07-10 16:09:14
1.4 代碼結構和縮進語法
啟動Python 3解釋器:
python
在Windows上啟動的代碼如上,而在Mac或者Linux上,啟動的代碼如下:
$ python3
Python的控制流結構,如for循環、while循環以及 if 語句,都是由以冒號終止的語句引入的,表示其構造的語句體緊隨其后。例如,for循環需要一個循環體,如果你輸入:
>>> for i in range(5):
...
Python會顯示三點的提示,要求你提供循環體。Python的一個獨特的(有時也飽受爭議)方面就是前置的空格是有語法意義的。
這意味著Python使用縮進級別,而不像其他語言使用大括號來劃分代碼塊。根據慣例,同級的Python代碼都以4個空格縮進。
所以當Python顯示三點提示時,我們提供4個空格和一個語句來形成循環體:
... x = i * 10
循環體中還將包含第二條語句,所以在接下來的三點提示中按回車鍵之后,我們再輸入4個空格,然后調用內置的print()
函數:
... print(x)
要終止代碼塊,那么必須在REPL中輸入一個空行:
...
隨著我們完成代碼塊,Python會執行待處理的代碼,輸出小于50且為10的倍數的數字:
0
10
20
30
40
看一下滿屏的Python代碼,我們可以看到清晰匹配的縮進——實際上必須匹配——程序的結構如圖1.1所示。
圖1.1 代碼中的空格
即使我們用灰線替換代碼,程序的結構也很清楚,如圖1.2所示。
圖1.2 用灰線替換代碼
以冒號結束的每個語句都會開始一個新行,并引入一個額外的縮進級別,直到取消縮進(dedent)將縮進恢復到上一級為止。每個級別的縮進通常是4個空格,稍后會更詳細地介紹這些規則。
Python使用的這種縮進語法有3大優點。
(1)它迫使開發人員在代碼塊中使用單一級別的縮進。在很多語言中,這通常被認為是好的做法,因為它使代碼更加易讀。
(2)具有縮進語法的代碼不會被不必要的花括號混淆,而你永遠也不會遇到有關代碼標準的爭辯——花括號應該在哪里。你可以很容易地識別Python代碼中的所有代碼塊,并且每個人都以相同的方式編寫代碼。
(3)縮進語法要求作者、Python運行時系統以及需要讀取代碼的未來維護者必須對代碼的結構給出一致的解釋。因此,你不會遇到有歧義的代碼結構。
Python縮進的規則看起來很復雜,但在實踐中卻相當簡單。
- 你可以使用空格(space)或制表符(tab)作為縮進。普遍的共識是,空格比制表符更好,4個空格已經成為Python社區的標準。
- 一個基本規則就是絕不混用空格和制表符。Python解釋器會“抱怨”,你的同事也會對你“窮追猛打”。
- 如果你愿意,你可以在不同的時間使用不同的縮進量。基本規則是相同縮進級別的連續代碼行被認為是相同代碼塊的一部分。
- 這些規則有一些例外,但它們幾乎總是與以其他方式提高代碼的可讀性有關,例如通過將多個語句分解成多行。
嚴格的代碼格式化方法就是像Guido一樣進行縮進代碼,也許更恰當的說法是像Guido一樣縮進它!重視代碼質量如可讀性已經成為Python文化的核心,接下來我們將探索一下這個問題。
- 深入理解Android(卷I)
- Progressive Web Apps with React
- Visual FoxPro程序設計教程
- Cocos2d-x游戲開發:手把手教你Lua語言的編程方法
- Web Development with Django Cookbook
- Python高效開發實戰:Django、Tornado、Flask、Twisted(第2版)
- 編譯系統透視:圖解編譯原理
- C語言程序設計
- Mastering Ext JS
- Java Web開發就該這樣學
- Learning Apache Cassandra
- Mastering Docker
- 一步一步跟我學Scratch3.0案例
- Spring Data JPA從入門到精通
- Getting Started with JUCE