這是一個系列文章,主要分享python的使用建議和技巧,每次分享3點,希望你能有所收穫。
1 正確的函數返回
- 不推薦方式
def divide(a, b):
if b != 0:
return a * 1.0 / b
print divide(1, 0)
# None
print divide(0, 1)
# 0.0
- 推薦方式
def divide(a, b):
try:
return a * 1.0 / b
except ZeroDivisionError as e:
raise e
print divide(0, 1)
# 0.0
print divide(1, 0)
# ZeroDivisionError: float division by zero
前一種方式中,如果輸入的參數b爲0,函數會默認返回None,這是一個不太好的編程習慣。例如,當把函數的返回值作爲if條件判斷時,0.0和None都是False,這樣容易導致bug。後面這種方式,將除數是0當成異常拋出,讓調用者處理異常,是比較合理的做法。
2 正確使用函數默認參數
- 不推薦方式
def gen_list(a=[], b=None):
a.append(b)
return a
print gen_list(b=2)
# [2]
print gen_list(b=3)
# [2, 3]
- 推薦方式
def gen_list(a=None, b=None):
if a is None:
a = []
a.append(b)
return a
print gen_list(b=2)
# [2]
print gen_list(b=3)
# [3]
前一種方式會導致函數默認值改變,多次調用相互影響。正確方式是將函數默認值設置成None,在函數內部初始化默認參數。這裏只是針對傳遞引用類型的參數,如果是數字、字符串等類型就不存在該問題。
3 利用元組傳遞多個函數參數
- 推薦方式
def demo(a, b, c, d):
print a, b, c, d
args = (1, 2, 3, 4)
demo(*args)
# 1 2 3 4
利用python的可變參數特性,可以通過元組傳遞多個參數,實現參數的“打包式”傳遞。