在那些卑微的日子里,不敢去仰望星空的浩瀚,不敢去觸碰人間的靜好,不敢去凝望高山的雄壯,不敢去期待流水的細長。
最近在用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
- 寫法二
def init_params(*list):
print(list[0])
if __name__ == '__main__':
list = [1, 2, 3, 4]
init_params(*list)
踩過的坑
- 上面加符號下面忘了加符號
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]
- 上面沒加符號,下面加了符號
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