首页 > 解决方案 > 将默认参数设置为字典中的函数

问题描述

我正在尝试将参数设置为任意字典中的函数。例如,如果我有

d = {"a": 5, "b": 8}

我想定义一个这样的函数

def f(a = 5, b = 8) :
    print(a, b)

但是没有指定参数,所以,最终,我想做类似的事情

def f(**d): 
    print(a,b)

但显然这不起作用,它只在我们调用函数时起作用,而不是在定义它时起作用,我将不胜感激。

标签: python

解决方案


您可以在函数中同时使用默认值和 **kwargs:

> def f(a=5, b=7, **kwargs):
>     print(a, b)

> f()
5, 7

> f(1, 2)
1, 2

> f(**{'a':20, 'b': 40})
20, 40

> f(**{'a':20})
20, 7

> f(a=300, **{'b':100})
300, 100

> # Okay
> f(3, **{'b':20})
3, 20

> # Not Okay
> f(3, **{'a':20})
TypeError: f() got multiple values for argument 'a'

推荐阅读