【问题标题】:Pass function argument to another function with mutation将函数参数传递给另一个具有突变的函数
【发布时间】:2020-01-13 14:12:47
【问题描述】:

我正在尝试编写以下代码

  1. func1 接受一堆论据(确切的不是事先不知道)
  2. 基于某些逻辑通过添加一个参数(比如说extra
  3. 下一个函数func2的所有这些参数。

以下是我尝试过的

def func2(*arg):
    #Some logic
    pass

def func1(*arg):
    arg["extra"] = 1
    func2(**arg)

func1(var1=1, var2=2)

但是,这并不成功并给出TypeError:unexpected keyword argument。我做错了什么?

【问题讨论】:

标签: python-3.x


【解决方案1】:

* 进行可迭代解包,** 进行字典解包(您可以通过提供参数名称来实现),因此您想使用 **kwargs 而不是 *args

def func2(**kwargs):
    print(kwargs)
    pass

def func1(**kwargs):
    print(kwargs)
    func2(**kwargs, extra=1)

func1(var1=1, var2=2)

输出:

{'var1': 1, 'var2': 2}
{'var1': 1, 'var2': 2, 'extra': 1}

【讨论】:

    猜你喜欢
    • 2018-10-22
    • 2011-03-09
    • 1970-01-01
    • 1970-01-01
    • 2012-09-25
    • 2020-10-03
    • 2014-01-06
    相关资源
    最近更新 更多