【发布时间】:2020-04-05 04:06:25
【问题描述】:
考虑如下定义的Python函数line:
def line(m, b):
def inner_function(x):
return m * x + b
return inner_function
这个函数的属性是对于任何浮点数m和b,对象line(m, b)是一个Python函数,当line(m, b)在一个浮点数x上被调用时,它返回一个浮点数@987654329 @。浮点line(m, b)(x) 可以解释为斜率m 和y 截距b 在点x 处的值。这是编写“取决于参数”m 和 b 的 Python 函数的一种方法。
- 这种编写依赖于某些参数的 Python 函数的方法是否有特殊名称?
- 是否有更 Pythonic 和/或计算效率更高的方法来编写与上述
line执行相同操作的函数?
【问题讨论】:
-
这不是“Pythonic”怎么办?效率不高怎么办?
-
这些被称为
closures- 它们很常见、有用并且完全可以写出来。 -
你可以写一个单行:
line = lambda m, b: lambda x: m * x + b,但是你的代码无论如何都很好(“pythonic”) -
@ScottHunter 我并不是要暗示有什么不是“Pythonic”或高效的——只是好奇是否有更好的方法。
标签: python function lambda closures