【问题标题】:Using one function as an optional argument in another function在另一个函数中使用一个函数作为可选参数
【发布时间】:2015-05-15 12:56:00
【问题描述】:

假设我有这个函数(一个非常简单的函数,只是为了表达我的意思):

def f(x):
    if x:
         return(True)
    return(False)

现在我想将此函数用作另一个函数中的可选参数,例如我尝试过这样的事情:

def g(x, f_out = f(x)):
    return(f_out)

所以基本上如果我做了g(1),输出应该是True,如果我做了g(0),我希望输出是False,因为f(0)False,因此f_outFalse.

当我尝试这个时,f_out 始终是 True,而不管 x。如何在获取值f_out 时实际调用函数f

我实际使用这个原理的代码显然更复杂,但它的想法是一样的;我在一些function1 中有一个可选参数,它调用不同的function2,其参数已经是function1 中的参数,例如x 在我的例子中。 (对不起,我知道这可能是一种不清楚的解释方式。)

【问题讨论】:

    标签: python function optional-parameters


    【解决方案1】:

    您在声明中调用了函数f_out。您想将函数本身作为参数传递,并在g 内部调用它:

    def g(x, f_out=f):
        return f_out(x)
    

    【讨论】:

    • 哦,是的,这很有道理!非常感谢。
    【解决方案2】:

    f_out = f(x) 尝试在声明函数时调用 f()(如果未定义全局 x,则会失败),而不是在调用它时。试试这个:

    def g(x, f_out=f):
        return f_out(x)
    

    这会使用参数x 调用f(),并从g() 返回其值。

    【讨论】:

    • 非常感谢,我现在明白了。
    猜你喜欢
    • 2023-03-27
    • 2018-11-13
    • 2016-04-06
    • 2022-01-11
    • 2015-01-30
    • 1970-01-01
    • 1970-01-01
    • 2016-07-21
    相关资源
    最近更新 更多