Python 代碼編寫時的一些小技巧
平時寫 Python 代碼的時候,如果注意一些小技巧的使用,可以使我們的代碼更簡潔好看。
1 條件表達式
很多情況下,我們需要用條件表達式對變數進行賦值。有些時候利用邏輯短路的原理來實現的話,可以讓代碼更簡潔。
比如,埠為 0 時將其改為默認埠,可以這樣
port = port if port else 6379
如果利用邏輯短路的原理,可以改寫成如下
port = port or 6379
解釋一下邏輯短路,或運算
a or b
當 a 為真時,邏輯運算直接返回 a。因為不需要繼續判斷,就已經能確定 a or b 已經是真了;當 a 為假返回 b。
與運算
a and b
當 a 為假時,邏輯運算直接返回 a。因為不需要繼續判斷,結果已經能確定為假了;當 a 為真返回 b。
簡單的說邏輯短路就是,如果當前已經能確定邏輯運算的真假了,就不繼續進行運算了,直接返回已計算的最後一個元素。
上面改寫的例子中,當 port 非 0 時會直接返回 port,為 0 時會返回 6379,與條件表達式功能一致。
再舉一個例子,求 a 的倒數(假設 a 為 0 時返回 0)。條件表達式可以這樣寫
b = 1 / a if a else 0
等同於這樣寫
b = a and (1 / a)
上面兩個例子通過邏輯短路來實現相同的功能相對要簡潔一些,不過並不是讓你在任何情況都用這種方式。如果當判斷條件太多的時候,反倒會降低可讀性。根據情況合理選擇就好。
2 連續比較
當判斷某個值是否屬於某個區間的時候,可以使用連續比較,這算是 Python 的一個特性吧。比如
if 0 < a < 10:
print(a)
等同於傳統的
if a > 0 and a < 10:
print(a)
3 邏輯判斷換行
當進行邏輯判斷時,如果判斷的變數名太長或是條件太多,使用反斜線換行很影響美觀,這個時候我們可以使用括弧。比如
if (variable_has_a_long_name_a > 0
and variable_has_a_long_name_b > 0
and variable_has_a_long_name_c > 0):
print(variable_has_a_long_name_a
+ variable_has_a_long_name_b
+ variable_has_a_long_name_c)
相比
if variable_has_a_long_name_a > 0
and variable_has_a_long_name_b > 0
and variable_has_a_long_name_c > 0:
print(variable_has_a_long_name_a
+ variable_has_a_long_name_b
+ variable_has_a_long_name_c)
看著要美觀一些。
當然,不只是進行邏輯判斷可能會碰到這種情況,在其他地方也可能碰到,那個時候也可以試著用用類似的方法。
4 多行字元串
除注釋外,很多情況我們需要使用多行字元串。如果使用的是單引號或者雙引號話,換行需要加反斜線,不但不好看,修改起來還不大方便。這個時候可以使用三單引號或者三雙引號。
比如
sql =
SELECT t.* FROM t
WHERE t.status = 0 AND t.created_at >= 1525104000 AND t.created_at <= 1527782399
ORDER BY id DESC
相比
sql = SELECT t.* FROM t
WHERE t.status = 0 AND t.created_at >= 1525104000 AND t.created_at <= 1527782399
ORDER BY id DESC
要簡潔方便一些。
5 上下文管理器
善用上下文管理器,減少一些不必要代碼的書寫。比如讀文件
file = open(file_name)
try:
for line in file:
print(line)
finally:
file.close()
改用上下文管理器的方式來寫
with open(file_name) as file:
for line in file:
print(line)
這樣會自動給你管理文件的打開與關閉,看起來清爽很多。
查看最新文章請關注公眾號「小小後端」。
推薦閱讀: