接受其他函数作为参数或返回函数的函数称为高阶函数。
所以 Panda'sapply()
是一个高阶函数。它接受另一个函数,如 egsum
并在内部调用或调用它作为sum(args)
.
要定义接受函数作为参数的高阶函数,请使用签名,就像普通函数一样。
在下面的示例中,这将是def md_heading(phrase):
.
查看如何调用预期为函数的参数:
def md_heading(phrase):
return "# " + phrase()
笔记:
apply(func)
.phrase
应该是一个函数引用,因为它将使用括号(不带参数)调用。md_heading()
是包装函数,phrase
函数参数。现在尝试将像 `'Hello World' 这样的字符串文字作为参数传递时会发生什么。
result = md_heading('Hello World') # this would pass it in, then try to call it .. and ?
print(result)
作为参数传递的字符串的调用将引发错误。正是在该声明return "# " + phrase()
中:
TypeError: 'str' object is not callable
现在您应该将函数作为参数传递,但只是作为参考(不带括号):
def greeting():
return 'Hi'
result = md_heading(greeting)
print(result)
印刷:Hi
或者你可以传递一个 lambda 作为参数:
result = md_heading(lambda: "Hello!")
print(result)
印刷:'Hello!
注意: lambda 不能有位置参数。这接近于传递一个常量,就像从头开始的字符串一样。
当我们像lambda name: "Hello " + name
这里这样使用位置参数定义 lambda 时,它会引发:TypeError: <lambda>() missing 1 required positional argument: 'name'
因为在我们的高阶函数中,它是在没有参数的情况下调用的,就像phrase()
.
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句