Python3 中實用的 10 種小技巧
前言
Python3 中有一些實用的小技巧,分享給大家。
三元運算子
常見寫法:
1 | if conditon: |
可以寫成:
1 | x = 1 if condition else 0 |
底線數字表示
常見寫法:
1 | num1 = 10000000000 |
可以寫成:
1 | num1 = 10_000_000_000 |
提昇可讀性且數字不會被底線影響。
資源管理器
通常我們程式做 I/O 都有開啟跟關閉,常常會忘記在程式碼結尾忘記關掉。
所以 with
這個語法會自動做開啟關閉的動作。
常見寫法:
1 | f = open('test.txt', 'r') |
可以寫成:
1 | with open('test.txt', 'r') as f: |
Enumerate
當我們要走訪一個序列且我們需要他的索引時,
常見寫法:
1 | data = ['A', 'B', 'C', 'D'] |
可以寫成:
1 | data = ['A', 'B', 'C', 'D'] |
Zip
當我們要一次走訪兩個相同長度的序列,
常見寫法:
1 | data = ['A', 'B', 'C', 'D'] |
可以寫成:
1 | data = ['A', 'B', 'C', 'D'] |
zip
甚至可以一次走訪兩個序列以上!
Unpacking
當我們有一個 tuple 要依序賦值可以這樣寫:
1 | a, b = (1, 2) |
當我們用不到某個數值時可以使用 _
1 | a, _ = (1, 2) |
在這邊我們視 c 為一個可以被 unpack 的變數
所以須加上 *
1 | a, b, *c = (1, 2, 3, 4, 5) |
我們也可以這樣寫
1 | a, b, *_, c = (1, 2, 3, 4, 5) |
Setattr/Getattr
當我們有一個物件,且我們要使用 String 來取得或是設定他的屬性
我們可以這樣寫:
1 | class Person(): |
GetPass
當我們要從命令列輸入密碼,我們可以使用 getpass()
取代input()
來取得輸入內容,命令列就不會顯示使用者打了什麼。
1 | from getpass import getpass |
Dash m
-m
指載入指定模組並且直接執行他,在這個例子中我們利用 -m
參數建立一個 http server
1 | $ python3 -m http.server |
Help/Dir
help
:用來顯示某個模組的說明文件
1 | $ python3 |
Output:
1 | Help on class datetime in module datetime: |
dir
:用來看物件中的屬性及方法
1 | $ python3 |