1. 程式人生 > >函式的可變引數問題

函式的可變引數問題

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)