Python 旋風之旅——Python 語法速覽

Python 語法速覽

Python 最初是作爲一種教學語言開發的,由於它易用性和簡潔的語法使它受到初學者和專家的歡迎。 Python 語法的整潔性導致一些人將其稱爲“可執行僞代碼”,而事實上,根據我的經驗,與閱讀類似的用 C 語言編寫的程序相比,閱讀和理解 Python 腳本通常要容易很多。 讓我們將開始討論 Python 語法的主要特性吧!

語法是指編程語言的結構(即正確程序的構成)。 我們目前將暫時不關注語義-語法中單詞和符號的含義-但稍後會再次討論。

考慮以下代碼示例:

# set the midpoint
midpoint = 5

# make two empty lists
lower = []; upper = []

# split the numbers into lower and upper
for i in range(10):
    if (i < midpoint):
        lower.append(i)
    else:
        upper.append(i)
        
print("lower:", lower)
print("upper:", upper)
lower: [0, 1, 2, 3, 4]
upper: [5, 6, 7, 8, 9]

這個腳本稍顯愚蠢,但是它簡潔的說明了 Python 語法的幾個重要方面。 讓我們開始瀏覽和討論 Python 的一些語法特徵吧!

用#標記註釋

該腳本以註釋開頭:

# set the midpoint

Python 中的註釋用井號(#)表示,# 後改行所有內容都將被解釋器忽略。 這意味着您可以擁有獨立的註釋行(如剛剛顯示的註釋)以及語句後的內聯註釋。 例如:

x + = 2  # shorthand for x = x + 2

Python沒有用於多行註釋的語法,例如 C 和 C++ 中使用的/ * ... * /語法,然而多行字符串通常被用作多行註釋的替代品(有關更多信息,請參見 字符串操作和正則表達式)。

語句終止行結束

腳本的下一行是:

midpoint = 5

這是一個賦值操作,我們在其中創建了一個名爲 midpoint 的變量,並將其賦值爲5。請注意,該語句的結尾僅由行尾標記。 這與 C 和 C++ 等語言相反,在 C 和 C++ 語言中,每個語句必須以分號(;)結尾。

在 Python 中,如果您希望語句連續到下一行,則可以使用“ \”標記來表明這一點:

x = 1 + 2 + 3 + 4 +\
    5 + 6 + 7 + 8

也可以在括號內將表達式連續下一行,而無需使用“ \”標記:

x = (1 + 2 + 3 + 4 +
     5 + 6 + 7 + 8)

大多數 Python 代碼格式指南都建議延續行使用第二個版本(括號內)而不是第一個(使用“ \”標記)。

分號也可終止語句

有時將多個語句放在一行上會很有用。 腳本的下一部分是:

lower = []; upper = []

這顯示瞭如何在 Python 中可選地使用熟悉的 C 語言中的分號(;)將兩個語句放在一行上。 從功能上講,這完全等同於如下寫法:

lower = []
upper = []

大多數 Python 編碼格式指南通常不建議使用分號將多個語句放在一行上,儘管偶爾會很方便。

縮進:空格很重要!

接下來,我們進入主要代碼塊:

for i in range(10):
    if i < midpoint:
        lower.append(i)
    else:
        upper.append(i)

這是一個包含循環和條件的複合控制流語句—我們稍後將介紹這些類型的語句。 現在先看 Python 中最有爭議的語法特徵:空白很有意義!

在編程語言中,代碼塊是一組應視爲一個單元的系列語句。 例如,在C語言中,代碼塊用花括號表示:

for(int i=0; i<100; i++)
{
      // curly braces indicate code block
      total += i;
}

在Python中,代碼塊由縮進表示:

for i in range(100):
    # indentation indicates code block
    total += i

在Python中,縮進的代碼塊始終在前一行的結尾加上冒號(:)。

Python 吸引人的魅力之一是使用縮進使代碼具有統一的,易讀的代碼格式。 但這也可能會使初學者感到困惑。 例如,以下兩個片段將產生不同的結果:

>>> if x < 4:         >>> if x < 4:
...     y = x * 2     ...     y = x * 2
...     print(x)      ... print(x)

在左側的代碼段中,print(x) 在縮進塊中,並且僅當 x 小於4時才執行。在右側的代碼段中,print(x) 在代碼塊之外,並且無論 x爲何值,都會執行!

Python 對空格有意義的使用通常令習慣於其他語言的程序員感到驚訝,但實際上,與不強制執行代碼塊縮進的語言相比,它可以使代碼更加一致和易讀。 如果您發現 Python 對空格的使用令人討厭,我鼓勵您嘗試一下:和我一樣,您會發現最終自己會喜歡上它的。

最後,您應該知道,用於縮進代碼塊的空白(空格或者Tab)量取決於用戶,只要在整個腳本中保持一致即可。 按照慣例,大多數程序格式指南建議將代碼塊縮進四個空格,這就是我們將在本教程中遵循的慣例。 請注意,許多文本編輯器(例如Emacs和Vim)都包含 Python 模式,這些模式會自動執行四空格縮進。

 

行內的空格不重要

儘管有意義的空白是代碼行前的空白(表示代碼塊),但是 Python 代碼行內的空白並不重要。 例如,這三個表達式都是等效的:

x=1+2
x = 1 + 2
x             =        1    +                2

濫用這種靈活性可能會導致代碼可讀性方面的問題–實際上,濫用空格通常是故意混淆代碼(某些人爲了遊戲而做)的主要方法之一。 有效地使用空格可以使代碼更具可讀性,尤其是在運算符彼此相連的情況下–比較以下兩個表達式用取負數求冪:

x=10**-2

x = 10 ** -2

可以看出第二個使用了空格的版本一目瞭然。 大多數 Python 編碼格式指南建議在二元運算符周圍使用一個空格,在一元運算符周圍不使用空格。 我們將在“基本Python語義:運算符”中進一步討論Python的運算符。

括號用於分組或調用

在前面的代碼片段中,我們看到了括號的兩種用法。 第一種典型的使用方式是用於對語句或數學運算進行分組:

2 * (3 + 4)
14

第二種用法用來指示正在調用一個函數。 在下一個代碼段中,將使用 print() 函數顯示變量的內容(請參見側欄)。 函數調用由一對括號表示,函數的參數包含在其中:

print('first value:', 1)
first value: 1
print('second value:', 2)
second value: 2

某些函數可以完全不帶參數地調用,在這種情況下,仍然必須使用左括號和右括號來表示函數調用。 一個示例是列表的排序方法:

L = [4,2,3,1]
L.sort()
print(L)
[1, 2, 3, 4]

sort 後的“()”表示執行該函數,即使不需要任何參數,括號也是必需的。

旁白:關於print()函數的註釋

上面我們使用了print() 函數的示例。 print() 函數是在 Python 2.x 和Python 3.x 之間的更改項之一。 在 Python 2 中,print 表現爲語句:也就是說,您可以編寫

# Python 2 only!
>> print "first value:", 1
first value: 1

由於各種原因,語言維護者決定在 Python 3 中將 print() 改爲函數,因此我們現在編寫

# Python 3 only!
>>> print("first value:", 1)
first value: 1

這是 Python 2 和 Python 3 之間的許多向後不兼容的設計之一。在撰寫本書時,通常會找到用兩個版本的 Python 編寫的示例,如果您查看Python 2代碼, 通常第一眼看到的現象是 print 語句而不是 print() 函數。

 

結束並獲得更多

以上是對 Python 語法基本特徵的非常簡短的探索。 目的是爲您在後面的章節中閱讀代碼提供一個良好的參考結構。 我們多次提到 Python “格式指南”,它可以幫助團隊以一致的格式編寫代碼。 Python中使用最廣泛的格式指南稱爲PEP8,可以在https://www.python.org/dev/peps/pep-0008/上找到。 當您開始編寫大量 Python 代碼時,通讀這將很有用! 格式建議包含許多 Python 專家的智慧,大多數建議不僅僅是簡單呆板的編碼格式:它們是基於經驗的建議,可以幫助避免代碼中的細微錯誤和缺陷。

本文來自翻譯如下文章,僅用於學習

原文:https://jakevdp.github.io/WhirlwindTourOfPython/01-how-to-run-python-code.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章