親愛的蟒蛇專家,這個問題是給你的!我不要求解決我的任務,只要求解釋為什么會發生)我知道他們使用時 args 和 kwargs 是什么,但當我發現一件事時,我真的很震驚。所以,請檢查我的示例,這里我們將引數傳遞給函式
def firstFunc(*args, **kwargs):
print('args' )
print(args)
print('kwargs')
print(kwargs)
firstFunc([1, 2], {'firstFirst': 'firstFirst', 'first' : '123', 'second' : '999'})
我的第二個問題是,為什么我們可以從第二個函式中獲取字典,如果我們將它設定為 kwargs['second'] = 222,那是我的代碼
def firstFunc(*args, **kwargs):
print('args' )
print(*args)
print('kwargs')
print(**kwargs)
kwargs['second'] = 222
secondFunc([1, 2], **kwargs)
def secondFunc(*args, **kwargs):
print('args' )
print(args)
print('kwargs')
print(kwargs)
firstFunc([1, 2], {'firstFirst': 'firstFirst', 'first' : '123', 'second' : '999'})
希望我描述的是可以理解的,我在等你的回答,請告訴我為什么會這樣,為什么我不能把字典作為 kwargs 傳遞!非常感謝你
#python #pythonic #kwargs #args #functions
我希望只有我的 kwargs 字典
uj5u.com熱心網友回復:
您將串列和字典作為兩個位置引數傳遞,因此這兩個位置引數顯示在您*args
的函式主體中,并且**kwargs
是一個空字典,因為沒有提供關鍵字引數。
如果要將串列的每個元素作為其自己的位置引數傳遞,請使用*
運算子:
firstFunc(*[1, 2])
如果您還想將字典的每個元素作為關鍵字引數傳遞,請使用**
運算子:
firstFunc(
*[1, 2],
**{'firstFirst': 'firstFirst', 'first' : '123', 'second' : '999'}
)
這相當于做:
firstFunc(
1,
2,
firstFirst='firstFirst',
first='123',
second='999'
)
uj5u.com熱心網友回復:
感謝你們 !我在傳遞引數時發現了不同之處,對于第一個函式,我沒有通過引數傳遞 **(應用擴展),但是對于第二個函式,我傳遞了它(應用擴展),這只是我的語法錯誤。但是當我們可以得出什么結論時——如果你將字典作為 kwargs 傳遞總是使用 **(總是擴展它),否則它將只是串列的元素(*args) 向所有人致以最誠摯的問候!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/537585.html