日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python之函数的收集参数和分配参数用法(‘*’ 和 ‘**’)

發布時間:2025/1/21 python 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python之函数的收集参数和分配参数用法(‘*’ 和 ‘**’) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

學過 C 或 C++的童鞋看到‘*’的第一反應就是“指針”,繼而在學習 Python 的時候,也看到同樣的星號,本以為對這家伙很熟悉,不過,真正了解 Python 中的"*"后才知道,這個 C 中的指針根本就是兩碼事。那么這里要總結的就是 Python 的星號的用法和含義,那就是收集參數和分配參數。

收集參數

什么叫收集參數呢?當我們在定義一個函數的時候,假如需要傳入的參數個數是不定的,按照一般的寫法可能需要定義很多個相同的函數然后指定不同的參數個數,這顯然是很麻煩的,不能根本解決問題。

為解決這個問題,Python 就推出了收集參數的概念。所謂的收集參數,就是說只指定一個參數,然后允許調用函數時傳入任意數量的參數。函數定義如下:

>>> def fun(*param)

在函數定義中可以看到,函數中定義的參數名前面多了一個星號(*),而就是這個星號起了作用。
參數前面的星號將提供的所有值都放在一個元組中,也就是將這些值都收集起來。

>>> def print_params(*params): ... print(params) ... >>> print_params('hello') ('hello',) >>> print_params(1,2,3) (1, 2, 3) >>> print_params() () >>> def print_params(title,*params): ... print(title) ... print(params) ... >>> print_params('hello',1,2,3) hello (1, 2, 3)

因此星號意味著收集余下的位置參數,如果沒有提供可收集的參數,params 將會是一個空元組。

與賦值一樣,帶星號的參數也可以放在其他位置(而不是最后),但不同的是,在這種情況下需要做些額外的工作:使用關鍵字來指定后續參數
示例如下:

>>> def fun(x,*y,z): ... print(x,y,z) ... >>> fun(1,2,3,4,5,z=6) 1 (2, 3, 4, 5) 6 >>> fun(1,2,3,4,5,6) Traceback (most recent call last):File "<stdin>", line 1, in <module> TypeError: fun() missing 1 required keyword-only argument: 'z'

上面示例可以看到,當帶星號的參數放在中間位置時,后面的參數在傳入時必須指定參數名,否則將會報錯。星號不會收集關鍵字參數。

那么,上面提到星號不會收集關鍵字參數,那么,如果要手機關鍵字參數怎么辦呢,這時候兩個“星星”(**)就派上用場了。
Python 總是那么體貼,什么情況都能考慮到。

接下來通過示例看看Python中的函數如何用**來收集關鍵字參數的。

>>> def fun(**params): ... print(params) ... >>> fun(x=1,y=2,z=3) {'x': 1, 'y': 2, 'z': 3}

通過上述示例可以看到,打印出來的值是一個字典而不是元組。

所以簡單的總結下:
Python 中函數參數帶*的話,將會收集非關鍵字的參數到一個元組中;
Python 中函數參數帶**的話,將會手機關鍵字參數到一個字典中;

下面結合使用這些技術來看個示例:

>>> def fun(x,y,z=3,*pospar,**keypar): ... print(x,y,z) ... print(pospar) ... print(keypar) ... >>> fun(1,2,3,4,5,6,a = 11,b = 12,c = 13) 1 2 3 (4, 5, 6) {'a': 11, 'b': 12, 'c': 13} >>> fun(1,2) 1 2 3 () {}

分配參數

前面說到收集參數,那么,和收集參數對應的相反操作就是分配參數,而分配參數同樣可以用* 和**來實現。通過示例來看看分配參數如何運作的。
加入有如下函數:

>>> def add(x,y): ... return x+y

同時假設有一個元組,其中包含需要相加的兩個數

>>> param = (1,2)

這與前面的操作差不多是相反的,不是收集參數,而是分配參數,在調用函數是使用*實現:

>>> add(*param) 3

上述是將一個元組分配給函數參數使用,這種做法也已用于參數列表的一部分,條件是這部分位于參數列表末尾。同樣的,可以使用**將字典中值分配給關鍵字參數。

>>> def fun(name,greeting): ... print(greeting,name) >>> param = {'name' :'jack','greeting':'well met'} >>> fun(**param) well met jack

OK,上述就是關于 Python 中收集參數和分配參數的用法,只有在定義函數(允許可變量的參數)或調用函數時(拆分自己或序列)使用,星號才能發揮作用。

總結

以上是生活随笔為你收集整理的Python之函数的收集参数和分配参数用法(‘*’ 和 ‘**’)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。