Python中呼叫函式時帶星號的簡單應用

2021-06-22 21:50:29 字數 1213 閱讀 5807

在前面的文章中我們已經說過函式定義時帶星號引數的使用,也就是將實參收集成元組(乙個星號)和字典(兩個星號)。但在事實上也可以執行相反的操作,比如乙個做加法的函式,def add(x, y),函式定義的時候是很常見的形參定義,但是我們要相加的兩個數在乙個元組中param = (1, 2),呼叫的時候這樣呼叫即可add(*param),表明我們傳遞的是乙個元組物件,需要將元組中的資料傳遞給形參。寫個簡單的**測試下:

#! encoding=utf-8

def test_add(x, y):

return x + y

if __name__ == "__main__":

param = (1, 2)

print test_add(*param)

控制台:

3當然函式呼叫時也可以使用帶兩個星號的實參,和乙個星號的原理相同,只是傳遞的是乙個字典物件給形參,需要注意的是在定義的形參變數名要和傳遞的字典物件中的key值是一樣的,否則無法解析傳遞的字典。

#! encoding=utf-8

def test_add(x, y):

return x + y

if __name__ == "__main__":

param =

print test_add(**param)

控制台列印:

3其實呼叫的時候實參前面帶星號和定義的時候形參前面帶星號是乙個互逆的過程,形參帶星號,是需要將傳遞的資料打包成元組或者字典,呼叫時實參帶星號,是要將傳遞的元組或者字典解析到形參中去。

最後寫乙個兩者結合的形式,加深下理解。**如下:

#! encoding=utf-8

def test_all(tuple_str1, tuple_str2, dict_str1, dict_str2, dict_str3):

return tuple_str1 + tuple_str2 + dict_str1 + dict_str2 + dict_str3

if __name__ == "__main__":

param_tuple = ('hello ', 'everyone ')

param_dict =

print test_all(*param_tuple, **param_dict)

控制台資訊:

hello everyone this is test

python函式引數帶星號

deffunction with one star t print t,type t deffunction with two stars d print d,type d 上面定義了兩個函式,分別用了帶乙個星號和兩個星號的引數,它們是什麼意思,執行下面的 function with one sta...

Python中函式的引數帶星號是什麼意思?

引數帶星號表示支援可變不定數量的引數,這種方法叫引數收集。星號又可以帶1個或2個,帶1個表示按位置來收集引數,帶2個星號表示按關鍵字來收集引數。1 帶乙個星號的引數收集模式 這種模式是在函式定義時在某個形參前面加乙個星號,呼叫時按位置匹配不帶星號的形參和實參,多餘的實參都將作為乙個元組的元素儲存到星...

python 中帶星號和雙星好的引數

當要使函式接收元組或字典形式的引數的時候,有一種特殊的方法,它分別使用 和 字首。這種方法在函式需要獲取可變數量的引數的時候特別有用。def powersum power,args return the sum of each argument raised to specified power.t...