函式的可變引數問題
阿新 • • 發佈:2018-11-02
def f(*x): print(x,type(x)) f(1) f('a','b') f(1,2,3,[23,31])
如上程式,定義了一個函式,裡面的引數加*代表可變引數,也就是可以輸入多個引數,但是,輸入進去後引數的型別就發生了變化。如下為程式執行結果:
(1,) <class 'tuple'> ('a', 'b') <class 'tuple'> (1, 2, 3, [23, 31]) <class 'tuple'>
執行結果顯示,引數變為了元組的形式,這一點以後一定要多注意!!!
可以利用這個特點做些事情:
(1)兩個數相乘:
#兩個數相乘 def f2(*x): print(x[0]*x[1]) f2(10,20)
(2)將輸入引數做累乘
#將輸入引數做累乘 def f3(*x): s = 1 for i in range(len(x)): s = s * x[i] print(s) f3(10,20,30)
(3)求輸入引數的平均值
def f6(*m): s = 0 for i in range(len(m)): s = s + m[i] s = s/len(m) print(s)#sum(m)/len(m) #或者直接用這句話代替上邊的幾句 f6(1,1,1,1)