[英]how to iterate over different kwargs?
我覺得以前一定要問過這個問題,但我找不到,對不起,如果是這樣的話!
我有一個不同參數的函數,如:
def f(arg1, arg2, ...,argN, kw1=0, kw2=0, kw3=0):
# some code ...
假設我定義了我的(強制性)參數:
arg1 = some_value_1
arg2 = some_value_2
...
argN = some_value_N
我想濃縮一些重復的函數調用,如
f(arg1, arg2, ... argN, kw1=1)
f(arg1, arg2, ... argN, kw1=23)
f(arg1, arg2, ... argN, kw2=456)
f(arg1, arg2, ... argN, kw2=789)
f(arg1, arg2, ... argN, kw3='a')
f(arg1, arg2, ... argN, kw3='b')
...
看起來像:
for kw_def in [kw1=1, kw1=23, kw2=456, kw2=789, kw3='a', kw3='b',...]:
f(arg1, arg2, ... argN, kw_def)
但語法上正確。 什么是正確的pythonic方式?
使用詞典:
for kw_def in [
{'kw1': 1},
{'kw1': 23},
{'kw2': 456},
]:
f(arg1, ..., argN, **kw_def)
使用部分功能 。
假設您有一個具有此簽名的函數:
def f(arg1, arg2, arg3, kw1, kw2, kw3):
pass
你可以縮短有共同價值觀的呼叫arg1
, arg2
, kw1
和kw2
是這樣的:
from functools import partial
f_short = partial(f, 1, 2, kw1="A", kw2="B")
f_short(3, kw3="C")
這次對f_short
調用相當於下面的直接調用:
f(1, 2, 3, kw1="A", kw2="B", kw3="C")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.