Python 3不是所有1行函数都是lambdas?

时间:2017-10-07 19:59:59

标签: python function lambda

对于以下4个功能:

def test1(a):
  def result(b):
    return a+b;
  return result

def test2(a):
  return lambda b: a+b

test3 = lambda a : lambda b : a+b

test4 = lambda a : (lambda b : a+b)

print(test1(2)(3))
print(test2(3)(4))
print(test3(5)(6))
print(test4(7)(8))

test1工作正常test1(a)(b)返回+ b
test2工作正常test2(a)(b)返回+ b
但是test3test4会出现语法错误undefined variable a

为什么翻译可以在test1和2中找到,但不能在3或4中找到? 有没有办法把测试函数写成lambda?

1 个答案:

答案 0 :(得分:2)

您的代码没问题,您所拥有的undefinded variable只是您正在使用的IDE或帮助程序的问题,似乎无法正确捕获lambda范围。

您可以看到它以相同的“错误”here运行 enter image description here