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

歡迎訪問 生活随笔!

生活随笔

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

python

python 魔法参数*argv 和 **kw

發布時間:2025/4/5 python 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 魔法参数*argv 和 **kw 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

阿里云大學人工智能學前小測驗-Python測驗

關于參數*argv 和 **kw的說法正確的是

A. 兩個參數必須為函數定義中參數列表中的排名最后的參數

B. *argv 代表該參數位置可以放任意個數的數據

C. **kw 代表該參數位置可以放 k=v 格式的數據

D. *argv最終會轉換成列表數據類型在函數體內處理

?

參考資料:https://blog.csdn.net/weixin_43181110/article/details/83270129,https://blog.csdn.net/xiongchun11/article/details/54405674,感謝博主們

其實*args 和 **kwargs這兩個變量并不是必須寫成這樣子,只是變量前面的這個*(星號)是必須要的,后面的變量名我們可以自己定義,這個*args 和 **kwargs只是一個通俗的命名約定而已。

args,是arguments的縮寫,單純意思是參數,kwargs是key word?arguments的縮寫,表示關鍵字參數。

它倆都是可變參數,*args 是接收多個無名參數,是一個tuple;**kwargs表示關鍵字參數,它是一個dict。并且同時使用*args和**kwargs時,必須*args參數列要在**kwargs前,像foo(a=1, b='2', c=3, a', 1, None, )這樣調用的話,會提示語法錯誤“SyntaxError: non-keyword arg after keyword arg”
?

?總結:

相同點:兩個參數必須為函數定義中參數列表中的排名最后的參數
不同點:
1.*argv代表該參數位置可以放置任意個數的數據,最終都會轉化成元祖數據類型在函數體內處理
2.**kw代表該參數位置可以放置k=v格式的數據,最終都會轉化成字典類型在函數體內處理

注意點:參數arg、*args、**kwargs三個參數的位置必須是一定的。必須是(arg,*args,**kwargs)這個順序,否則程序會報錯

?

首先看一下*args的用法:

*args 和 **kwargs 主要用于函數定義。 你可以將不定數量的參數傳遞給一個函數。
這里的不定的意思是:預先并不知道, 函數使用者會傳遞多少個參數給你, 所以在這個場景下使用這兩個關鍵字。 *args 是用來發一個非鍵值對的可變數量的參數列表給一個函數.例如:

def test_var_args(f_arg, *argv):
print("first normal arg:", f_arg)
for arg in argv:
print("another arg through *argv:", arg)
test_var_args('yasoob', 'python', 'eggs', 'test')
這會產生如下輸出:
first normal arg: yasoob
another arg through *argv: python
another arg through *argv: eggs
another arg through *argv: test


下面看一下**kwargs的用法:

**kwargs允許你將一個不定長度的鍵值對,作為參數傳遞給一個函數。如果需要在一個函數中處理帶名字的參數時,此時就應該使用**kwargs了。

例如:

def greet_me(**kwargs):
for key, value in kwargs.items():
print("{0} == {1}".format(key, value))
>>> greet_me(name="yasoob")
name == yasoob
這就是**kwagrs用處,可以讓我們很好的在函數中處理一個鍵值對參數。
接下來讓我們看一下怎樣使用*args 和 **kwargs來調用一個參數為列表或者字典的函數。
假設,我們有這樣一個函數:

def test_args_kwargs(arg1, arg2, arg3):
print("arg1:", arg1)
print("arg2:", arg2)
print("arg3:", arg3)
我們現在使用*args或者**kwargs來給這個函數傳遞參數:
首先使用*args:

>>> args = ("two", 3, 5)
>>> test_args_kwargs(*args)
arg1: two
arg2: 3
arg3: 5
現在使用**kwargs:
>>> kwargs = {"arg3": 3, "arg2": "two", "arg1": 5}
>>> test_args_kwargs(**kwargs)
arg1: 5
arg2: two
arg3: 3


標準參數與*args、**kwargs在使用時的順序需要特別注意一下。
如果現在該一個函數中同時使用這三種參數,此時這三種參數的順序應該是:標準參數,*args,**kwargs

如?some_func(fargs, *args, **kwargs)
那么關于什么使用這些參數,這就需要看自己的需求啦,也不是每個函數都需要使用者三種參數的,比較常見的應該是在使用函數裝飾器的時候,此外它也可以用來做猴子補丁(monkey patch)。猴子補丁的意思是在程序運行時(runtime)修改某些代碼。 比如,你有一個類,里面有個叫get_info的函數會調用一個API并返回響應的數據。如果我們想測試它,可以把API調用替換成一些測試數據。例如:

import someclass
def get_info(self, *args):
return "Test data"
someclass.get_info = get_info

?

總結

以上是生活随笔為你收集整理的python 魔法参数*argv 和 **kw的全部內容,希望文章能夠幫你解決所遇到的問題。

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