【问题标题】:How can I define the argument name of an inner function in an outer function?如何在外部函数中定义内部函数的参数名称?
【发布时间】:2019-06-11 10:06:19
【问题描述】:

我有一个具有不同默认输入参数的函数 f_1,例如arg_1 和 arg_2。现在我想用另一个函数 f_2 调用 f_1 并更改其中一个默认参数,让我们说 arg_1。如何告诉 f_2 我要更改 f_1 中的 arg_1?

def f_1(arg_1 = x, arg_2 = y):
    some computations
    return result

def f_2(value_for_arg_f_1, name_arg_f_1):
    do some stuff
    out_f_1 = f_1(name_arg_f_1 = value_for_arg_f_1)
    do some more stuff
    return result_f_2
end_result = f_2(z, arg_2)

那么查看示例代码 - 我必须为 f_2 中的 name_arg_f_1 写什么,这样(在 end_result 的计算中)out_f_1 = f_1(arg_2=z)?

【问题讨论】:

  • out_f_1 = f_1(arg_2=value_for_arg_f_1)?除非让读者感到困惑,否则很难看出代码的用途。

标签: python python-3.x function arguments


【解决方案1】:

你可以使用[Python 3.Docs]: Glossary - argument的例子:

complex(real=3, imag=5)
complex(**{'real': 3, 'imag': 5})

它依赖于[Python]: PEP 448 - Additional Unpacking Generalizations

>>> def f1(arg1=1, arg2=2):
...     print("    Argument 1: [{:}], Argument 2: [{:}]".format(arg1, arg2))
...
>>>
>>> f1()
    Argument 1: [1], Argument 2: [2]
>>>
>>> def f2(f1_arg_val, f1_arg_name):
...     f1(**{f1_arg_name: f1_arg_val})
...
>>>
>>> f2("value for argument 2", "arg2")
    Argument 1: [1], Argument 2: [value for argument 2]

【讨论】:

  • 谢谢,这正是我想要的。我不知道 ** 输入
【解决方案2】:

您可以使用 lambda 函数,例如,

def adder(x=2, y=3):
    return x+y

adder()
# 5

adderEight = lambda y: adder(8, y)
adderEight(10)
# 18

【讨论】:

    猜你喜欢
    • 2021-07-07
    • 1970-01-01
    • 1970-01-01
    • 2021-08-20
    • 2020-08-15
    • 1970-01-01
    • 1970-01-01
    • 2013-06-23
    • 1970-01-01
    相关资源
    最近更新 更多