管理重复的关键字参数

2024-10-01 04:54:50 发布

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

我想在类中创建一个用户级方法,其中参数可以通过关键字的几个变体传递。 为此,我为每个关键字参数设置一个允许的变体列表,并检查每个列表中的每个关键字。e、 g.:

def some_function(self, **kwargs):
    """
    this function does something with a and b as keyword args
    """
    dict_allowed_a = ['a_variation1','a_variation2',...]
    dict_allowed_b = ['b_variation1','b_variation2',...]

    for arg_str in kwargs():
        if arg_str in dict_allowed_a:
            local_a = kwargs[arg_str]
        if arg_str in dict_allowed_b:
            local_b = kwargs[arg_str]
        else:
            print('Invalid keyword', file=sys.stderr)
            raise ValueError

return self._private_method(local_a, local_b)

我有3个问题,从更具体到不太具体:

  1. 我如何检查某人是否通过了一个的几个变体 参数,它必须引发异常。在
  2. 我做得对吗?在
  3. 我是否应该这样做,试图管理变量输入?在

Tags: inself列表参数localargfunction关键字
1条回答
网友
1楼 · 发布于 2024-10-01 04:54:50

请注意,您必须处理一些奇怪的情况,例如

  1. 用户同时指定a_variation1a_variation2
  2. 用户没有指定其中任何一个

我会用像

local_a = ([kwargs[x] for x in kwargs.keys() if x in dict_allowed_a] + [None])[0]
local_b = ([kwargs[x] for x in kwargs.keys() if x in dict_allowed_b] + [None])[0]

请注意,[0]将只提取第一个值,这处理情况1。在

[None]类似于默认值,它用于案例2。在

相关问题 更多 >