python學習 可變引數 和

2021-09-27 09:55:34 字數 1257 閱讀 6711

有乙個函式,引數個數不一定,定義可變引數

def test_1(*numbers):

print(numbers, type(numbers))

test_1(1, 2, 3, 4) # 傳入了4個引數

test_1(1, 2, 3) # 傳入了3個引數

(1, 2, 3, 4) (1, 2, 3)
這樣定義引數以後,會發現寫入的n個引數在函式內部numbers接收到的是乙個元組

那如果傳入的引數本身就是乙個元組或者list的話

p1 = (1, 2, 3, 4)

p2 = [1, 2, 3]

test_1(p1)

test_1(*p1)

test_1(p2)

test_1(*p2)

執行結果為:

((1, 2, 3, 4),) (1, 2, 3, 4) ([1, 2, 3],) (1, 2, 3)
會發現如果在呼叫函式的時候test_1(*(1, 2, 3, 4)),等同於test_1(1, 2, 3, 4)

如果在呼叫函式的時候不加*,則會把元組或者list作為乙個引數傳進去,那麼他們整體就會作為元組的第乙個元素

思考在呼叫函式的時候加*和在定義函式的時候加*

def test_2(x, y):

print('x', x)

print('y', y)

test_2(*(1, 4))

執行結果為:

x 1

y 4

在定義函式的時候用*,那麼引數接收到的就是乙個元組

如果在呼叫函式的時候用*,就會把乙個元組或者list的所有元素作為可變引數傳進去

**的用法和*的用法類似

def test_1(**kw):

print(kw, type(kw))

def test_2(city, name):

print('city', city)

print('name', name)

test_1(city='成都', age=18)

dic =

test_1(**dic)

test_2(**dic)

執行結果為:

city 成都

name 張三

python中的可變引數和不可變引數

知識點 python中,萬物皆物件。python中不存在所謂的傳值呼叫,一切傳遞的都是物件的引用,也可以認為是傳址。python在heap中分配的物件分成兩類 可變物件和不可變物件。所謂可變物件是指,物件的內容可變,而不可變物件是指物件內容不可變。不可變 immutable int 字串 strin...

Python可變引數

在python函式中,還可以定義可變引數。顧名思義,可變引數就是傳入的引數個數是可變的,可以是1個 2個到任意個,還可以是0個。以數學題為例子,給定一組數字a,b,c 請計算a2 b2 c2 要定義出這個函式,我們必須確定輸入的引數。由於引數個數不確定,我們首先想到可以把a,b,c 作為乙個list...

python 可變引數

1.args可以使用陣列和元組 2.kwargs可以使用字典作為引數def t args p,args 把陣列 元組作為引數傳遞給 args param p param args return print p for a in args print a deft kw p,kwargs 把字典作為可...