_
)字元。資料型別 | 範例 |
---|---|
布林值 (Bool) | True , False |
整數 (Integers) | -2, -1, 0, 1, 2, 3, 4, 5 |
浮點數 (Floating-point numbers) | -1.25, -1.0, -0.5, 0.0, 0.5, 1.0, 1.25 |
複數 (Complex numbers) | 2+1j , 3-5j |
字串 (Strings) | 'a', 'aa', 'aaa', 'Hello!', '11 cats' |
可使用內建函數
type()
來驗證賦值給變數的值的資料型別。
從最高到最低優先權:
運算子 | 運算 | 範例 |
---|---|---|
** | 指數運算 | 2 ** 3 = 8 |
% | 取餘數/模運算 | 22 % 8 = 6 |
// | 向下取整除法(整數除法) | 22 // 8 = 2 |
/ | 浮點數除法(真除法) | 22 / 8 = 2.75 |
* | 乘法 | 3 * 3 = 9 |
- | 減法 | 5 - 2 = 3 |
+ | 加法 | 2 + 2 = 4 |
>>, << | 位移運算 | 16 >> 2 |
&, ^, | | 位元邏輯運算 | 1 ^ 0 |
>, >=, == | 比較運算符 | 2 != 3 |
not, and, or | 邏輯運算子 | (4 < 5) and (5 < 6) |
=, +=, *= | 指派運算子 | a += 1 |
你可以使用括號來正確指定複雜運算式中運算的順序。
運算子 | 等價表達 |
---|---|
var += 1 |
var = var + 1 |
var -= 1 |
var = var - 1 |
var *= 1 |
var = var * 1 |
var /= 1 |
var = var / 1 |
var %= 1 |
var = var % 1 |
var **= 2 |
var = var ** 2 |
範例:
帶有註解的程式碼:
也可以使用函數的文件字串(docstring)或多行字串作為註解:
print()
函數print()
函數會寫出它所給予參數的值。它能處理多個參數、浮點數以及字串。字串在印出時不會包含引號,而且各項之間會自動加入空格,這樣可以使格式看起來更整齊:
關鍵字參數 end
可用來避免印出後自動換行,或以其他字串結尾:
關鍵字 sep
用來指定多個物件之間的分隔符號,預設為空白:
input()
函數此函數從使用者那裡取得輸入,並將其轉換成字串:
input()
也可以直接設置預設提示訊息而不需另外使用 print()
:
len()
函數計算字串、清單、字典等中字符的數量,並返回其整數值:
bool()
、int()
、float()
、complex()
與 str()
函數這些函數允許你轉換變數的型別。例如,你可以將 integer
或 float
轉換成 string
:
或者將 string
轉換成 integer
或 float
:
運算子 | 意義 |
---|---|
== |
等於 |
!= |
不等於 |
< |
小於 |
> |
大於 |
<= |
小於或等於 |
>= |
大於或等於 |
這些運算子會根據你給予的值計算為 True
或 False
。
範例:
有三個布林運算子:and
、or
和 not
。
and
運算子的真值表:運算式 | 運算結果 |
---|---|
True and True |
True |
True and False |
False |
False and True |
False |
False and False |
False |
or
運算子的真值表:運算式 | 運算結果 |
---|---|
True or True |
True |
True or False |
True |
False or True |
True |
False or False |
False |
not
運算子的真值表:運算式 | 運算結果 |
---|---|
not True |
False |
not False |
True |
你可以混合使用布林運算子和比較運算子:
另外,你也可以在一個運算式中同時使用多個布林運算子以及比較運算子:
if
敘述if
敘述會執行一個運算式,如果該運算式為 True
,則執行以下縮排的程式碼:
else
敘述僅在 if
以及所有 elif
運算式計算為 False
時執行:
只有當 if
敘述的運算式計算為 False
時,elif
敘述才會被計算並執行:
elif
與 else
部分都是可選的。
請注意,Python 在 Python 3.10 中引入了
match
敘述,作為實作 switch
敘述的另一種控制敘述。
while
迴圈敘述while
迴圈用於在一個運算式為 True
的情況下重複執行程式碼:
break
敘述如果執行流程到達一個 break
敘述,它會立即退出 while
迴圈的區塊:
它同樣適用於 for
迴圈:
continue
敘述當程式執行到 continue
敘述時,會立即跳回迴圈起始處開始下一次迭代。
它也適用於 for
迴圈:
for
迴圈for
迴圈會遍歷一個可迭代的物件,如 range()
、list
、tuple
、dictionary
、set
或 string
:
range()
函數range()
函數會返回一個數字序列。它從 0 開始,每次遞增 1,並在指定的數字之前停止:
range()
函數也可以修改它的預設三個引數。前兩個分別為 start
和 stop
值,第三個為 step
引數。間隔值表示每次迭代後變數增加的數量。
你甚至可以使用負數作為間隔引數,使 for
迴圈遞減而非遞增:
sys.exit()
結束程式exit()
函式允許結束 Python 程式。
seed()
seed
方法用於初始化隨機數產生器。
設定種子為一個數字,將永遠返回相同的隨機數:
randint()
此方法返回介於給定起始與終止引數之間的隨機數:
函數可以接受 參數
並回傳 返回值
:
在以下範例中,函數 say_hello()
接受參數 "name" 並印出問候語:
上述的函數並不回傳任何值(隱式地,回傳 None
),這樣的函數稱為 無返回值函數 (void function)。以下這個函數則會回傳值,因此被稱為 有返回值的函數 (fruitful function):
在定義函數時,我們列出輸入的參數。這些參數被稱為位置參數(或位置引數),因為在 def
聲明中,參數的位置決定了每個參數的對應關係。
我們可以為參數設定默認值:
為了提高程式碼可讀性,應該盡量做到明確。我們可以使用 關鍵字參數 (Keyword Arguments)
來實現這一點:
當使用 def
來創建函數時,你可以使用 return
來指定函數的返回值。return
語句由以下部分構成:
return
關鍵字。 你經常會看到
**kwargs
用來收集不特定的關鍵字參數。**kwargs
必須是最右邊的參數。
spam
可以是局部變數,也可以是全局變數。global
語句如果需要從函數內部修改全局變數,可以使用 global
語句:
判斷變數是局部變數還是全局變數的四條規則:
global
語句對變數進行操作,那麼這個變數是全局變數。要開始導入函數,首先需要創建一個模組。模組是一個以 .py
結尾的文件,包含你希望導入到程式中的程式碼。讓我們考慮一個包含函數 make_pizza()
的模組。
from
導入特定函數as
為函數或模組取別名 然而,在處理你沒有編寫的大型模組時,最好避免使用這種方法:如果模組中有一個函數名稱與你項目中的現有名稱相同,可能會產生意外的結果!
切片完整串列會執行複製:
len()
獲取串列長度enumerate()
獲取索引in
與 not in
運算子多重賦值技巧是一個快捷方式,讓你能夠在一行程式碼中將多個變數賦予串列中的值。這樣,比起以下方式:
你可以寫成這樣:
多重賦值技巧也可以用來交換兩個變數的值:
append()
append
會將一個元素添加到串列的尾端:
insert()
insert
會在指定的位置插入一個元素:
del
del
使用索引刪除項目:
sort()
排序值你也可以為 reverse
參數傳入 True
來讓 sort()
反向排序值:
你也可以使用內建函數 sorted
返回一個新的串列:
串列生成式是一種特殊語法,讓我們可以從其他串列創建串列,當處理數字和有一層或兩層巢狀 for
迴圈時非常有用。
這是我們如何從現有的集合創建新串列,使用 for
迴圈:
這是使用串列生成式實現的相同功能:
我們也可以對數字做相同的操作:
如果我們希望 new_list
只包含以 C 開頭的名稱,使用 for
迴圈,我們會這樣做:
在串列生成式中,我們將 if
語句放在結尾:
使用 if-else
語句的串列推導式:
注意,大多數情況下方法會原地修改
list
,而函數會創建一個新的 list
元組和串列的主要區別在於,雖然
元組
是 不可變的 物件,串列
是 可變的。這意味著元組不能改變,而串列可以修改。元組比串列更節省記憶體。
元組與串列的主要區別是,像字串一樣,元組是不可變的。
list()
與 tuple()
之間轉換H e l l o w o r l d !
0 1 2 3 4 5 6 7 8 9 10 11
in
與 not in
運算子跳脫字元是透過輸入反斜線 \
後跟隨你想要插入的字元來創建的。
跳脫字元 | 顯示為 |
---|---|
\' |
單引號 |
\" |
雙引號 |
\t |
水平製表符 (Tab) |
\n |
換行 (換行符) |
\\ |
反斜線 |
原始字串完全忽略所有跳脫字元,並將字串中出現的任何反斜線視為字面上的字元。
%
運算元我們可以使用 %d
格式規範符將整數值轉換為字串:
如果你使用的是 Python 3.6 或更新版本,字串 f-字串
是推薦的字串格式化方法。
甚至可以進行內聯運算:
四捨五入
顯示為百分比
數字 | 格式 | 輸出 | 描述 |
---|---|---|---|
3.1415926 | {:.2f} | 3.14 | 格式化浮點數為兩位小數 |
3.1415926 | {:+.2f} | +3.14 | 格式化浮點數為兩位小數並顯示正負號 |
-1 | {:+.2f} | -1.00 | 格式化浮點數為兩位小數並顯示正負號 |
2.71828 | {:.0f} | 3 | 格式化浮點數為不顯示小數 |
4 | {:0>2d} | 04 | 用零填充數字(左側填充,寬度 2) |
11 | {:11d} | 11 | 右對齊(預設,寬度 10) |
11 | {:<11d} | 11 | 左對齊(寬度 10) |
11 | {:^11d} | 11 | 置中對齊(寬度 10) |
[]
設定鍵值[]
取得值若字典中不存在該鍵,則會引發 KeyError
異常。
values()
values()
方法可取得字典中的 值:
keys()
keys()
方法可取得字典中的 鍵:
由於預設情況下會遍歷鍵,因此無需使用 .keys():
items()
items()
方法可取得字典中的 項目,並以一個 <router-link to=/cheatsheet/lists-and-tuples#the-tuple-data-type>元組</router-link> 的形式返回:
利用 keys()
、values()
和 items()
方法,for 迴圈可以分別遍歷字典的鍵、值或鍵值對:
get()
get()
方法會返回具有指定鍵的項目的值;若該鍵不存在,則返回 None
:
您也可以將預設的 None
值改成您想要的其他值:
setdefault()
新增項目可以使用以下方式向字典中新增一個項目:
使用 setdefault
方法,可以使程式碼更簡潔:
del
del
命令根據指定鍵刪除項目。