Python中的“_args”和“__kwargs”用法詳解
*args 和 **kwargs
首先,要知道的是并不是必須寫成*args和**kwargs。 只有變量前?的*才是必須的。所以,你也可以寫成*var 和**vars。寫成*args 和**kwargs只是?個通俗的命名約定。
*args 和 **kwargs 主要?于函數(shù)定義。 你可以將不定數(shù)量的參數(shù)傳遞給?個函數(shù)。
這里的不定的意思是: 預先并不知道,函數(shù)使?者會傳遞多少個參數(shù),所以在這個場景下使用這兩個關(guān)鍵字。
*args 的用法
*args是用來發(fā)送?個非鍵值對的可變數(shù)量的參數(shù)列表給?個函數(shù)。
來看一個例子,可以幫助理解:
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 允許將不定長度的鍵值對,作為參數(shù)傳遞給?個函數(shù)。 如果你想要在?個函數(shù)里處理帶名字的參數(shù),應(yīng)該使用**kwargs。
def greet_me(**kwargs): for key, value in kwargs.items(): print("{0} == {1}".format(key, value)) >>> greet_me(name="yasoob") name == yasoob
使? *args 和 **kwargs 來調(diào)用函數(shù)
接下來學習一下怎樣使用*args 和**kwargs來調(diào)用?個參數(shù)為列表或者字典的函數(shù)。
現(xiàn)在有這樣?個函數(shù):
def test_args_kwargs(arg1, arg2, arg3): print("arg1:", arg1) print("arg2:", arg2) print("arg3:", arg3)
可以使用*args或**kwargs來給這個函數(shù)傳遞參數(shù)。 比如這樣使用*args:
>>> args = ("two", 3, 5) >>> test_args_kwargs(*args) arg1: two arg2: 3 arg3: 5
標準參數(shù)與*args、**kwargs在使用時的順序:
some_func(fargs, *args, **kwargs)
啥時候用
最常見的用例是在寫函數(shù)裝飾器的時候。
它也可以用來做猴子補丁。
到此這篇關(guān)于Python中的“_args”和“__kwargs”用法的文章就介紹到這了,更多相關(guān)Python args和kwargs用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用PyTorch/TensorFlow搭建簡單全連接神經(jīng)網(wǎng)絡(luò)
在本篇博客中,我們將介紹如何使用兩大深度學習框架——PyTorch 和 TensorFlow,構(gòu)建一個簡單的全連接神經(jīng)網(wǎng)絡(luò),該網(wǎng)絡(luò)包含輸入層、一個隱藏層和輸出層,適合初學者理解神經(jīng)網(wǎng)絡(luò)的基本構(gòu)建模塊及訓練流程,需要的朋友可以參考下2025-02-02Python Pandas實現(xiàn)數(shù)據(jù)分組求平均值并填充nan的示例
今天小編就為大家分享一篇Python Pandas實現(xiàn)數(shù)據(jù)分組求平均值并填充nan的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07tensorflow之自定義神經(jīng)網(wǎng)絡(luò)層實例
今天小編就為大家分享一篇tensorflow之自定義神經(jīng)網(wǎng)絡(luò)層實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02