当使用可选参数时,什么时候最好使用**kwargs,最好使用关键字?

2024-04-19 23:01:49 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我有一个函数有三个或四个可选关键字参数,最好使用**kwargs还是在函数定义中指定它们?在

我觉得 def foo(required, option1=False, option2=False, option3=True) 看起来比 def foo(required, **kwargs)。在

但是,如果我需要使用这些关键字作为条件句,而且它们不存在,我会抛出KeyErrors,我觉得在每个条件之前检查关键字有点混乱。在

def foo(required, **kwargs):
    print(required)
    if 'true' in kwargs and kwargs['true']:
        print(kwargs['true'])

foo('test', true='True')
foo('test2')

^{2}$

我想知道什么是最Python的方式。我有一个函数,我正在处理它,根据传递的参数将返回不同的值,所以我想知道处理它的最佳方法。它现在起作用了,但我想知道是否有更好、更像Python的方式来处理它。在


Tags: 函数falsetrue参数定义foodef方式
2条回答

如果函数只在自己的操作中使用参数,则应显式列出所有参数。这将允许Python检测在调用函数时是否提供了无效参数。在

当您需要接受动态参数时,通常使用**kwargs,因为您将它们传递给其他函数,并且您希望您的函数接受其他函数需要的任何参数,例如other_func(**kwargs)

在保持函数定义干净的同时传递几个可选参数的一种简单方法是使用包含所有参数的字典。这样你的功能就变成了

def foo(required, params):
    print(required)
    if 'true' in params and params['true']:
        print(params['true'])

如果您的参数可以是任何参数而您并不真正关心,那么您确实希望使用**kwargs,例如对于decorator函数。如果要使用函数中的参数,应该显式地指定它们。在

相关问题 更多 >