【问题标题】:Python function call example([a,b,c,d])(input) [duplicate]Python函数调用示例([a,b,c,d])(输入)[重复]
【发布时间】:2016-10-19 00:59:51
【问题描述】:

我对python编程比较陌生,我在codewarriors中看到了这段代码sn-p。 谁能解释一下这段代码...

def example(functions):
  #my_code
  return None

example([a,b,c,d])(input) #What kind of call is this?

这里 a,b,c,d 是定义的函数。 我需要定义example 函数以返回与d(c(b(a(input)))) 的结果相同的结果

我只是熟悉example([1,2,3])(1) 这里传递的值是一个列表。但是如果它们是函数呢?

还请评论任何好的资源以清楚地理解它。

【问题讨论】:

  • 您显示的代码将引发错误(“None value is not callable”)。通常您通过f(parameters) 调用函数。另请注意,在 python 中,注释由# 开始。在 python 中,函数只是普通的对象,因此您可以将它们分配给变量,将它们放入列表中,将它们用作函数参数,......所以如下定义:def call(f, argument): return f(argument)
  • 我已经编辑了代码。很抱歉。
  • 函数和其他一切一样都是对象。它们可以传递给函数并由函数返回。例如,sorted 函数接受一个有效的 key 参数:sorted([1,2,3,4,5,6], key=lambda x: x%2) 将返回 [2,4,6,1,3,5]

标签: python chained


【解决方案1】:

我们来看看foo(x)(y)通常是什么意思:

def foo(x):
    def bar(y):
        return x + y
    return bar

print(foo(2)(3)) #prints 5

这里第一个函数调用返回另一个函数,然后用自己的参数调用,它也可以使用第一个函数的参数和局部变量。

在你的情况下,他们可能希望你写的是:

def example(functions)

    def f(input):
        for function in functions:
            input = function(input)
        return result

    return f

example(<functionlist>) 返回第二个函数,它将<functionlist> 中的所有函数应用于传递给第二个(返回的)函数调用的输入。

【讨论】:

  • 谢谢,您能否推荐一些资源,以便我阅读更多相关信息。
猜你喜欢
  • 2018-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-21
  • 2022-11-23
  • 2017-04-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多