python函數(shù)參數(shù)踩過的坑

在那些卑微的日子里,不敢去仰望星空的浩瀚,不敢去觸碰人間的靜好,不敢去凝望高山的雄壯,不敢去期待流水的細長。

最近在用python做運維模塊,跟著廖老師的基礎教程又重新學了一遍基礎,發(fā)現(xiàn)函數(shù)參數(shù)這部分之前忽略了不少,在這里做個筆記記錄下

函數(shù)中含有可變參數(shù)

1.寫法一

def init_params(list):
    print(list[0])
if __name__ == '__main__':
    list = [1, 2, 3, 4]
    init_params(list)
>>> 1
  1. 寫法二
def init_params(*list):
    print(list[0])
if __name__ == '__main__':
    list = [1, 2, 3, 4]
    init_params(*list)

踩過的坑

  1. 上面加符號下面忘了加符號
def init_params(*list):
    print(list[0])
if __name__ == '__main__':
    list = [1, 2, 3, 4, 5]
    init_params(list)

這個時候,你會發(fā)現(xiàn)輸出是這樣的:
[1,2,3,4,5]

  1. 上面沒加符號,下面加了符號
def init_params(list):
    print(list[0])
if __name__ == '__main__':
    list = [1, 2, 3, 4, 5]
    init_params(*list)

這個時候,代碼會報錯:


錯誤提示.png

錯誤原因

python函數(shù)中,如果參數(shù)帶了 * 號,python會默認這個參數(shù)是可選參數(shù),也可以這樣理解,不加 * 號是一個參數(shù),加上 * 號是一個對象,所以第一個坑就很顯然了,list被認為方法中唯一一個參數(shù),所以會把所有參數(shù)都打印,第二個坑方法中需要一個參數(shù),你卻給了一個對象(對象可以包含很多參數(shù)),所以會報錯

后話

遇見這種問題,你心里肯定好多句MMP,但是程序員不寫出各種各樣讓人無法維護的BUG又怎樣能體現(xiàn)自己的價值呢?


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

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

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