Python 四大基本語法
- 2020 年 2 月 24 日
- 筆記
四大基本語法
分別從變數命名規則、縮進原則、特殊關鍵字和特殊運算符四個方面,總結 Python 的基本語法。
命名規則
Python 的變數命名規則主要包括兩條:
- 允許包括英文、數字以及下劃線(
_
),不能以數字開頭 - 名稱區分大小寫
特別說明以「下劃線」開頭的變數是有特殊意義的:
- 類變數若以單下劃線(
_
)開頭,代表不能直接被訪問,類似於 C# 的受保護型變數(protected),表示不能通過import module_name
而導入。 - 類變數若以雙下劃(
__
)開頭,表示為類的私有成員,不能被導入和其他類變數訪問。 - 以雙下劃開頭和雙下劃線結尾的變數是 Python 里的專用標識,有特殊的身份。
如 Python 自定義類中都包括 __init__ 和 __add__ 方法,如果不重寫 __add__ 去執行兩個類加法操作,程式會拋 TypeError 異常。只有重寫後,程式才能正常執行加法操作。
Python 變數命名習慣一般遵守蛇形命名法(snake case):
- 一般變數命名,book_id、book_store_count;
- 類名首字元為大寫,如 Python 內置模組 collections.abc 中的 Iterable 類、我們自定義的 Book 類等;
- 類方法名:get_store_count();
- 其他特殊變數,會全部大寫,M_PI、MAX_VEHICLE_SPEED。
這與 Java 命名方法不同,Java 最典型的命名方法——駝峰命名法(camel case)
縮進原則
Python 最具特色的地方就是用縮進代替 Java、C++ 中的 {}
,縮進的層級結構表示程式碼的邏輯層次。
比如,自定義一個 Book 類,重寫 __add__ 方法計算兩類書的庫存量和。
Python 的縮進方法,一般為 4 個字元。
- 程式碼行
class Book(object)
與程式碼行# 定義類的參數
的縮進,此處為 4 個字元; - 程式碼行
def __add__(self,book):
與return
所在行縮進也是 4 個字元。
通過這種層級結構,展現程式碼的邏輯層次。
下面程式碼,創建一個 Book 類:
class Book(object): # 定義類的參數 def __init__(self,book_id, book_name, book_store_count): self.book_id = book_id self.book_name = book_name self.book_store_count = book_store_count # 重寫加法操作 def __add__(self,book): return self.book_store_count + book.book_store_count # 創建兩個 Book 類的實例: python_intro_book = Book(1,'python入門書',100) ml_intro_book = Book(2,'機器學習入門書',200) # 求兩本書的總銷量 sales_cnt = python_intro_book + ml_intro_book print(sales_cnt) # 300
如下是程式碼執行結果的演示圖,列印總銷量 300。結合圖形,輔助大家快速理解程式碼。
image-20200218101020064
為了幫助新手更容易理解程式碼整個執行過程,專欄會配備相應的演示動畫:
縮進格式、行間空行數、變數和等號空格等 Python 編碼規範參考PEP8。
autopep8 包遵循 PEP8 的所有規範,安裝此包,做好相關配置,便可自動實現 PEP8 制定的編碼規範。
特殊關鍵字
Python 有 35 個關鍵字:
False await else import pass None break except in raise True class finally is return and continue for lambda try as def from nonlocal while assert del global not with async elif if or yield
自定義變數名不能與它們重複。
常用且不同於其他常用語言 C++ 和 Java 的關鍵字,如:
True
和False
用於表示值的真假,在 Java 中是true
和false
;- 邏輯反操作 Python 使用
not
,Java 是!
; None
表示空值,Java 使用null
;- Python 兩個條件同時滿足使用
and
,Java 是&&
; - 兩者滿足其一,Python 使用
or
,Java 使用||
; - Python 使用
elif
, Java 是else if
。
其他比較特殊的關鍵字,如:
del
用於刪除可迭代對象中某個元素;def
用於定義函數;- 帶
yield
用於定義生成器(generator)函數; global
和nonlocal
一種應用是 Python 函數式編程的閉包場景;pass
一種應用是定義介面,也是 Python 語言特有的一個關鍵字。
這些關鍵字的用法,會在後續文章,更為詳細的介紹。在此,先構建一個整體上的認識即可。
特殊運算符
Python 的運算符包括:
+ - * ** / // % @ << >> & | ^ ~ := < > <= >= == !=
大部分運算符應該被熟知,重點介紹 3 個比較特殊的://
、**
、:=
。
//
用於兩個數值相除且向下取整,與 Python 的 math 模組中 floor 功能相似:
In [1]: 5//2 Out[1]: 2 In [2]: 5//4.5 Out[2]: 1.0
**
用於冪運算:
In [1]: 2**3 Out[1]: 8
:=
是在 2019 年,Python 3.8 版本里,剛剛才被支援的運算符,被形象地稱為「海象運算符」。
n = len(a) if n > 10: print(f"{n}大於10")
如果使用「海象運算符」,寫法上更為精簡:
if (n := len(a)) > 10: print(f"{n}大於10")
Python 比較運算符還支援鏈式比較,應用起來更加方便,比如:
i = 3 print(1 < i < 3) # False print(1 < i <= 3) # True
另外,運算符 @
用於裝飾器功能,本專欄會深入解釋它的本質,同時配備的幾個相關案例,一定會幫助你學會使用裝飾器。