python - 函数可以是函数定义的参数吗
问题描述
当我们定义我们的自定义函数时,我们可以添加另一个函数作为我们的参数之一。我在这个问题上徘徊,并没有得到这背后的概念。
以下是一些让我感到困惑的例子。
def func1(x,y=len()):
pass
我想知道当我们调用它们时这些函数参数会发生什么
我很感激如果有人能指出用另一个函数作为参数来实现一个函数的所有方法。
解决方案
函数是像其他任何东西一样的对象。一旦你定义了一个
>>> 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
推荐阅读
- javascript - 为什么这个模板文字在反应原生图像源中不起作用?
- tensorflow - 有没有办法在不使用张量流中的转置函数的情况下转置张量?
- mysql - 提取最新的非零收入行
- azure - ADF Tumbling 窗口触发器 - 自依赖
- android - AAB 和 XAPK 有什么区别?
- javascript - 两个物体接触时的A帧触发功能
- eclipse - 在使用 Big Sur 11.4 的 MacBook Pro 中面临权限相关问题
- javascript - document.getElementById("") = "" 在 Laravel 刀片中不起作用
- reactjs - 在 React 中的 audio.play() 之后 audio.pause() 不起作用
- mysql - MySQL、Sequelize、nodejs 中的多种模型和加入