Python入門知識點彙總

程式設計師啟航發表於2019-06-16

Python的設計目標之一是讓程式碼具備高度的可閱讀性。它設計時儘量使用其它語言經常使用的標點符號和英文單字,讓程式碼看起來整潔美觀。它不像其他的靜態語言如C、Pascal那樣需要重複書寫宣告語句,也不像它們的語法那樣經常有特殊情況和意外。

縮排

Python開發者有意讓違反了縮排規則的程式不能通過編譯,以此來強制程式設計師養成良好的程式設計習慣。並且Python語言利用縮排表示語句塊的開始和退出(Off-side規則),而非使用花括號或者某種關鍵字。增加縮排表示語句塊的開始,而減少縮排則表示語句塊的退出。縮排成為了語法的一部分。例如if語句:

python3

Python入門知識點彙總

根據PEP的規定,必須使用4個空格來表示每級縮排(不清楚4個空格的規定如何,在實際編寫中可以自定義空格數,但是要滿足每級縮排間空格數相等)。使用Tab字元和其它數目的空格雖然都可以編譯通過,但不符合編碼規範。支援Tab字元和其它數目的空格僅僅是為相容很舊的的Python程式和某些有問題的編輯程式。

控制語句

if語句,當條件成立時執行語句塊。經常與else, elif(相當於else if) 配合使用。

for語句,遍歷列表、字串、字典、集合等迭代器,依次處理迭代器中的每個元素。

while語句,當條件為真時,迴圈執行語句塊。

try語句,與except,finally配合使用處理在程式執行中出現的異常情況。

class語句,用於定義型別。

def語句,用於定義函式和型別的方法。

pass語句,表示此行為空,不執行任何操作。

assert語句,用於程式除錯階段時測試執行條件是否滿足。

with語句,Python2.6以後定義的語法,在一個場景中執行語句塊。比如,執行語句塊前加密,然後在語句塊執行退出後解密。

yield語句,在迭代器函式內使用,用於返回一個元素。自從Python 2.5版本以後。這個語句變成一個運算子。

raise語句,製造一個錯誤。

import語句,匯入一個模組或包。

from import語句,從包匯入模組或從模組匯入某個物件。

import as語句,將匯入的物件賦值給一個變數。

in語句,判斷一個物件是否在一個字串/列表/元組裡。

表示式

Python的表示式寫法與C/C++類似。只是在某些寫法有所差別。

主要的算術運算子與C/C++類似。+, -, *, /, //, **, ~, %分別表示加法或者取正、減法或者取負、乘法、除法、整除、乘方、取補、取餘。>>, <<表示右移和左移。&, |, ^表示二進位制的AND, OR, XOR運算。>, <, ==, !=, <=, >=用於比較兩個表示式的值,分別表示大於、小於、等於、不等於、小於等於、大於等於。在這些運算子裡面,~, |, ^, &, <<, >>必須應用於整數。

Python使用and, or, not表示邏輯運算。

is, is not用於比較兩個變數是否是同一個物件。in, not in用於判斷一個物件是否屬於另外一個物件。

Python支援“列表推導式”(list comprehension),比如計算0-9的平方和:

>>> sum(x * x for x in range(10))
285
Python使用lambda表示匿名函式。匿名函式體只能是表示式。比如:
>>> add=lambda x, y : x + y
>>> add(3,2)
5

Python使用y if cond else x表示條件表示式。意思是當cond為真時,表示式的值為y,否則表示式的值為x。相當於C++和Java裡的cond?y:x。

Python區分列表(list)和元組(tuple)兩種型別。list的寫法是[1,2,3],而tuple的寫法是(1,2,3)。可以改變list中的元素,而不能改變tuple。在某些情況下,tuple的括號可以省略。tuple對於賦值語句有特殊的處理。因此,可以同時賦值給多個變數,比如:

>>> x, y=1,2#同時給x,y賦值,最終結果:x=1, y=2

特別地,可以使用以下這種形式來交換兩個變數的值:

>>> x, y=y, x #最終結果:y=1, x=2

Python使用'(單引號)和"(雙引號)來表示字串。與Perl、Unix Shell語言或者Ruby、Groovy等語言不一樣,兩種符號作用相同。一般地,如果字串中出現了雙引號,就使用單引號來表示字串;反之則使用雙引號。如果都沒有出現,就依個人喜好選擇。出現在字串中的(反斜槓)被解釋為特殊字元,比如\n表示換行符。表示式前加r指示Python不解釋字串中出現的\。這種寫法通常用於編寫正規表示式或者Windows檔案路徑。

Python支援列表切割(list slices),可以取得完整列表的一部分。支援切割操作的型別有str, bytes, list, tuple等。它的語法是...[left:right]或者...[left:right:stride]。假定nums變數的值是[1, 3, 5, 7, 8, 13, 20],那麼下面幾個語句為真:

nums[2:5] == [5, 7, 8] 從下標為2的元素切割到下標為5的元素,但不包含下標為5的元素。

nums[1:] == [3, 5, 7, 8, 13, 20] 切割到最後一個元素。

nums[:-3] == [1, 3, 5, 7] 從最開始的元素一直切割到倒數第3個元素。

nums[:] == [1, 3, 5, 7, 8, 13, 20] 返回所有元素。改變新的列表不會影響到nums。

nums[1:5:2] == [3, 7] 從下標為1的元素切割到下標為5的元素但不包含下標為5的元素,且步長為2。

函式

Python的函式支援遞迴、預設引數值、可變引數,但不支援函式過載。為了增強程式碼的可讀性,可以在函式後書寫“文件字串”(Documentation Strings,或者簡稱docstrings),用於解釋函式的作用、引數的型別與意義、返回值型別與取值範圍等。可以使用內建函式help()列印出函式的使用幫助。比如:

Python入門知識點彙總

物件的方法

物件的方法是指繫結到物件的函式。呼叫物件方法的語法是instance.method(arguments)。它等價於呼叫Class.method(instance, arguments)。當定義物件方法時,必須顯式地定義第一個引數,一般該引數名都使用self,用於訪問物件的內部資料。這裡的self相當於C++, Java裡面的this變數,但是我們還可以使用任何其它合法的引數名,比如this 和 mine 等,self與C++,Java裡面的this不完全一樣,它可以被看作是一個習慣性的用法,我們傳入任何其它的合法名稱都行,比如:

Python入門知識點彙總

Python認識一些以“ ”開始並以“ ”結束的特殊方法名,它們用於實現運算子過載和實現多種特殊功能。

型別

Python採用動態型別系統。在編譯的時候,Python不會檢查物件是否擁有被呼叫的方法或者屬性,而是直至執行時,才做出檢查。所以操作物件時可能會丟擲異常。不過,雖然Python採用動態型別系統,它同時也是強型別的。Python禁止沒有明確定義的操作,比如數字加字串。

與其它面嚮物件語言一樣,Python允許程式設計師定義型別。構造一個物件只需要像函式一樣呼叫型別即可,比如,對於前面定義的Fish型別,使用Fish()。型別本身也是特殊型別type的物件(type型別本身也是type物件),這種特殊的設計允許對型別進行反射程式設計。

Python內建豐富的資料型別。與Java、C++相比,這些資料型別有效地減少程式碼的長度。下面這個列表簡要地描述了Python內建資料型別(適用於Python 3.x):

1240
1240

除了各種資料型別,Python語言還用型別來表示函式、模組、型別本身、物件的方法、編譯後的Python程式碼、執行時資訊等等。因此,Python具備很強的動態性。

數學運算

Python使用與C、Java類似的運算子,支援整數與浮點數的數學運算。同時還支援複數運算與無窮位數(實際受限於計算機的能力)的整數運算。除了求絕對值函式abs()外,大多數數學函式處於math和cmath模組內。前者用於實數運算,而後者用於複數運算。使用時需要先匯入它們,比如:

>>> import math
>>> print(math.sin(math.pi/2))
1.0

fractions模組用於支援分數運算;decimal模組用於支援高精度的浮點數運算。

Python定義求餘執行a % b的值處於開區間[0, b)內,如果b是負數,開區間變為(b, 0]。這是一個很常見的定義方式。不過其實它依賴於整除的定義。為了讓方程式:b * (a // b) + a % b = a恆真,整除執行需要向負無窮小方向取值。比如7 // 3的結果是2,而(-7) // 3的結果卻是-3。這個演算法與其它很多程式語言不一樣,需要注意,它們的整除運算會向0的方向取值。

Python允許像數學的常用寫法那樣連著寫兩個比較執行符。比如a < b < c與a < b and b < c等價。C++的結果與Python不一樣,首先它會先計算a < b,根據兩者的大小獲得0或者1兩個值之一,然後再與c進行比較。

推薦一個學Python的學習裙【 784758214 】,無論你是大牛還是小白,是想轉行還是想入行都可以來了解一起進步一起學習!裙內有開發工具,很多幹貨和技術資料分享!希望新手少走彎路

不要太過急功近利, 慢慢玩, 精進.

如果你覺著程式設計有趣, 成長也就不再痛苦, 祝學習愉快.


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913713/viewspace-2647825/,如需轉載,請註明出處,否則將追究法律責任。

相關文章