python技巧分享(六)

這是一個系列文章,主要分享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的可變參數特性,可以通過元組傳遞多個參數,實現參數的“打包式”傳遞。

發佈了63 篇原創文章 · 獲贊 11 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章