首页 > 解决方案 > 函数可以是函数定义的参数吗

问题描述

当我们定义我们的自定义函数时,我们可以添加另一个函数作为我们的参数之一。我在这个问题上徘徊,并没有得到这背后的概念。

以下是一些让我感到困惑的例子。

def func1(x,y=len()):
    pass

我想知道当我们调用它们时这些函数参数会发生什么

我很感激如果有人能指出用另一个函数作为参数来实现一个函数的所有方法。

标签: pythonfunction

解决方案


函数是像其他任何东西一样的对象。一旦你定义了一个

>>> def foo(param):
...     return "Do all the " + param
... 

您可以将它传递给另一个函数并让该函数进行调用

>>> def bar_1(func, param):
...     print(func(param))
... 
>>> bar_1(foo, "things")
Do all the things

您可以使用函数对象作为默认参数

>>> def bar_2(func=foo, param=""):
...     print(func(param))
... 
>>> bar_2()
Do all the 

您甚至可以调用函数并使用其结果来设置参数的默认值

>>> def bar_3(text=foo("things")):
...     print(text)
... 
>>> bar_3()
Do all the things

但是您不能调用函数来定义参数名称本身。在这里,您似乎希望len()(返回 int 或在这种情况下失败)的结果是参数的名称,但这违反了 python 的语法规则。

>>> def func1(x,y,len()):
  File "<stdin>", line 1
    def func1(x,y,len()):
                     ^
SyntaxError: invalid syntax

推荐阅读