【问题标题】:Currying in Python lambdas在 Python lambda 中进行柯里化
【发布时间】:2017-06-28 13:22:31
【问题描述】:

我正在尝试在 Python 2.7 中编写一个简单的柯里化函数,但内部 lambda 似乎无法访问父 lambda 范围。

为简单起见,我们取这个函数:

add = lambda a: lambda b: a + b

内层 lambda 的作用域不能访问外层(Python 无法识别 a)。

有没有一种方便的方法可以使外部范围可访问?

【问题讨论】:

  • 有效:>>> add = lambda x: lambda b: b + x ; >>> add(5)(2) ; 7

标签: python python-2.7 lambda scope currying


【解决方案1】:

这个例子在 python 2.7.11 中似乎对我有用

add = lambda a: lambda b: a + b
f = add(1)
print f(2)
3
print f(10)
11

不过,更复杂的示例可能会失败。 lambda 函数存储对封闭范围内变量的引用,而不是它们的值。这可能有助于解决更复杂的问题:https://stackoverflow.com/a/938493/8131703

【讨论】:

  • 如果有,应该是评论,而不是答案。
猜你喜欢
  • 2017-01-20
  • 2010-09-14
  • 2011-08-06
  • 1970-01-01
  • 2015-02-23
  • 2015-10-15
  • 2014-12-30
  • 2010-11-29
相关资源
最近更新 更多