使用字典定义默认参数

问题描述 投票:0回答:1

我有一个不寻常的情况,在定义函数

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
在体内没有发生改变,但这是一种不安全的做法。

python function dynamic
1个回答
0
投票

我不认为你可以精确地做你想做的事情,但你可以使用字典参数方法,然后将其与默认值合并:

def my_function(params: dict = {})
    params = the_defaults | params
    # rest of code
© www.soinside.com 2019 - 2024. All rights reserved.