python技巧分享(六)

這是一個(gè)系列文章,主要分享python的使用建議和技巧,每次分享3點(diǎn),希望你能有所收獲。

1 正確的函數(shù)返回

  • 不推薦方式
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

前一種方式中,如果輸入的參數(shù)b為0,函數(shù)會(huì)默認(rèn)返回None,這是一個(gè)不太好的編程習(xí)慣。例如,當(dāng)把函數(shù)的返回值作為if條件判斷時(shí),0.0和None都是False,這樣容易導(dǎo)致bug。后面這種方式,將除數(shù)是0當(dāng)成異常拋出,讓調(diào)用者處理異常,是比較合理的做法。

2 正確使用函數(shù)默認(rèn)參數(shù)

  • 不推薦方式
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]

前一種方式會(huì)導(dǎo)致函數(shù)默認(rèn)值改變,多次調(diào)用相互影響。正確方式是將函數(shù)默認(rèn)值設(shè)置成None,在函數(shù)內(nèi)部初始化默認(rèn)參數(shù)。這里只是針對(duì)傳遞引用類型的參數(shù),如果是數(shù)字、字符串等類型就不存在該問題。

3 利用元組傳遞多個(gè)函數(shù)參數(shù)

  • 推薦方式
def demo(a, b, c, d):
    print a, b, c, d


args = (1, 2, 3, 4)
demo(*args)
# 1 2 3 4

利用python的可變參數(shù)特性,可以通過元組傳遞多個(gè)參數(shù),實(shí)現(xiàn)參數(shù)的“打包式”傳遞。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容