我有一个不寻常的情况,在定义函数
the_defaults
之前创建关键字类型参数默认值 my_function
的字典:
the_defaults = {'kwarg_a': 1, 'kwarg_b': 2}
def my_function(kwarg_a = the_defaults.kwarg_a, kwarg_b = the_defaults.kwarg_b):
print(kwarg_a)
print(kwarg_b)
这段代码很丑陋,因为我必须将参数列出三次并手动寻址
the_defaults
的条目。
有什么办法可以避免这种情况吗?
我正在想象一个动态函数头def my_function(**kwargs=**the_defaults): [...]
但这显然没有意义。
我当前的解决方法是将
my_function
定义为接受一个参数,并使用字典默认值。
然后函数体是根据字典条目而不是局部变量编写的。
虽然the_defaults
在体内没有发生改变,但这是一种不安全的做法。
我不认为你可以精确地做你想做的事情,但你可以使用字典参数方法,然后将其与默认值合并:
def my_function(params: dict = {})
params = the_defaults | params
# rest of code