1. 程式人生 > 實用技巧 >python 星號的使用 * **

python 星號的使用 * **

python 星號的使用

在呼叫或者使用函式的時候經常會出現*,有的時候用一個,有的時候用兩個,這個含義具體是什麼呢?

定義方法時使用星號

一個星號的情況:

def fun(*args):
    print(isinstance(args, tuple)) #返回的是True
    for i in args:
        print(i)
fun(1, 2, 3)

上面的例子表示,我們雖然傳遞了3個引數1, 2, 3,但是fun函式把他們放到了一個元組。並且引數的個數不限。

兩個星號的情況:

def fun2(**kwargs):
    print(isinstance(kwargs, dict)) #返回的是True
    pass
fun2(a=1, b=2, c=3)

上面的例子表明,使用兩個星號,我們傳遞的引數是被當作一個字典來進行傳遞的,引數的個數不限。其實我們看kwargs這個名字就可以推出,這個引數是字典型別的。

呼叫方法時使用星號

一個星號的情況

def fun(a, b, c):
    return a+b+c
test = [1, 2, 3]
print(fun(*test))
#把序列test中的每個元素,當作位置引數傳遞到函式中去,就不用test[0],test[1]這樣了

前提是傳遞序列中元素的個數應該和函式定義的引數

兩個星號的情況

def fun(c, b, a):#注意順序
	return a==1 and b==2 and c==3
test = {'a':1, 'b':2, 'c':3}
print(fun(**test))

雖然字典中的定義的資料和函式定義的順序不一致,但是我們是按照關鍵字來進行函式賦值的,所以這個函式返回的結構是True