PYTHON:如果调用函数时参数中缺少 kwargs 键,则设置默认值

问题描述

我正在尝试使用 kwargs 重构我的代码。假设我有一个回调函数,它可以处理 50 个变量,有时我想调用函数并只传递 10 个 kwargs 参数。当参数中缺少那个 kwargs 的 KEY 时,是否可以有一个像 None 这样的认值?

这是我想要实现的目标的简短示例

class Obj:
    def __init__(self,first_name,last_name,middle_name):
        self.first_name = first_name
        self.last_name = last_name
        self.middle_name = middle_name

    def main(self):
        print(f"BEFORE: {self.last_name},{self.first_name} {self.middle_name}")
        self.callback(
            new_first_name = "Mark Anthony",new_last_name  = "Vale"
            # new_middle_name key => not using here
        )

    def callback(self,**kwargs):
        self.first_name         = kwargs['new_first_name']
        self.last_name          = kwargs['new_last_name']

        # Set a default value if new_middle_name key is missing in parameters when self.callback is being called
        self.middle_name        = "Not Foo" if kwargs['new_middle_name'] else kwargs['new_middle_name']

        print(f"AFTER: {self.last_name},{self.first_name} {self.middle_name}")

obj = Obj(first_name="John",last_name="Doe",middle_name="Foo")
print(obj.main())

这会抛出 KeyError: 'new_middle_name'

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)