Python中的“_args”和“__kwargs”用法詳解
*args 和 **kwargs
首先,要知道的是并不是必須寫成*args和**kwargs。 只有變量前?的*才是必須的。所以,你也可以寫成*var 和**vars。寫成*args 和**kwargs只是?個通俗的命名約定。
*args 和 **kwargs 主要?于函數(shù)定義。 你可以將不定數(shù)量的參數(shù)傳遞給?個函數(shù)。
這里的不定的意思是: 預(yù)先并不知道,函數(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ù)
接下來學(xué)習(xí)一下怎樣使用*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標(biāo)準參數(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ò)
在本篇博客中,我們將介紹如何使用兩大深度學(xué)習(xí)框架——PyTorch 和 TensorFlow,構(gòu)建一個簡單的全連接神經(jīng)網(wǎng)絡(luò),該網(wǎng)絡(luò)包含輸入層、一個隱藏層和輸出層,適合初學(xué)者理解神經(jīng)網(wǎng)絡(luò)的基本構(gòu)建模塊及訓(xùn)練流程,需要的朋友可以參考下2025-02-02
Python Pandas實現(xiàn)數(shù)據(jù)分組求平均值并填充nan的示例
今天小編就為大家分享一篇Python Pandas實現(xiàn)數(shù)據(jù)分組求平均值并填充nan的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07
tensorflow之自定義神經(jīng)網(wǎng)絡(luò)層實例
今天小編就為大家分享一篇tensorflow之自定義神經(jīng)網(wǎng)絡(luò)層實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02

