平時寫 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)

這樣會自動給你管理文件的打開與關閉,看起來清爽很多。

查看最新文章請關注公眾號「小小後端」。


推薦閱讀:
相關文章