函數(shù)參數(shù)的靈活使用
1.默認值參數(shù)
2.列表參數(shù)
1)默認值參數(shù)
有參數(shù)的函數(shù)而言谬莹,必須在調(diào)用時制定參數(shù)
#給函數(shù)參數(shù)定義默認值
def max(num1=0, num2=0):
if num1 > num2:
return num1
else:
return num2
print(max())#兩個形參都為0
print(max(-1))#兩個形參分別為-1和0
print(max(1, -1))#兩個形參分別為1和-1
---------------------------------------------------------------
#并非所有的參數(shù)都必須有默認值
def max(num1, num2=0):
if num1 > num2:
return num1
else:
return num2
print(max(-1, 5))
#輸出為0泪蔫,因為第一個參數(shù)為-1芋类,第二個參數(shù)默認值為0
------------------------------------------------------------------------------
#常見的錯誤
def max(num1=0, num2):
if num1 > num2:
return num1
else:
return num2
非默認參數(shù)跟隨默認參數(shù)
(沒有默認值的參數(shù)不能跟在默認參數(shù)后面)
如果可以的話,僅有的一個數(shù)值將無法確定校坑,究竟是應該用于改變第一個參數(shù)的默認值紧武,還是直接賦給第二個沒有默認值的參數(shù)
2)列表參數(shù)
列表參數(shù)并非類型為列表的參數(shù)偏形!
#先看看列表類型的參數(shù)
def arraySum(num):
sum =0
? ? for iin num:
sum += i
return sum
num = [1, 2, 3, 4, 5]
print(arraySum(num))
#輸出是15
--------------------------------------------------------------
#這樣對不對
def arraySum(num):
sum =0
? ? for iin num:
sum += i
return sum
num = [1, 2, 3, 4, 5]
print(arraySum(1, 2, 3, 4, 5))
報錯,arraySum()接受1個位置參數(shù)寡痰,但給出5個位置參數(shù)
arraySum函數(shù)只有1個位置參數(shù)抗楔,但是卻給了5個參數(shù)
#解決方法很簡單
def arraySum(*num):
sum =0
? ? for iin num:
sum += i
return sum
print(arraySum(1, 2, 3, 4, 5))
*表示序列拆分操作符
函數(shù)會把全部的參數(shù)拿過來,自動變成一個列表拦坠,主要方便處理個數(shù)不確定的參數(shù)
例:
定義一個函數(shù)sumPower连躏,可以計算多個數(shù)值的任意冪值之和
比如:
1^2+2^2+3^2+4^2
3^10+10^10+(-1)^10
#1^2+2^2+3^2+4^2
def sumPower(*num, power):
sum =0
? ? for iin num:
sum += i ** power
return sum
print(sumPower(1, 2, 3, 4, 2))
TypeError: sumPower() missing 1 required keyword-only argument: 'power'
類型錯誤:sumPower()缺少1個必須的僅關(guān)鍵字參數(shù)
遺漏了一個必須的關(guān)鍵詞參數(shù),原因也很簡單贞滨,雖然可以理解為1到4的每個數(shù)的平方和入热,但是也可以理解為是5個底數(shù)而缺少冪拍棕。