對於以下4個功能:Python 3並非所有的1行函數都是lambdas?
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)
回報A + B
test2
正常工作太test2(a)(b)
返回A + B
但test3
和test4
給出一個語法錯誤undefined variable a
爲什麼譯員是否可以在test1和2中找到一個,但不能在3或4中找到?
有沒有辦法將測試函數寫成lambda?
嘗試運行實際運行的代碼 - 它的工作原理。 – MatsLindh
請參閱https://ideone.com/02s6h7顯示它正在運行。 –
@roganjosh這當然是我的問題的簡化版本。我不認爲我需要在我的文章中明確地調用test1和test2。 (但我確實在我自己的代碼中嘗試過)。如果你喜歡,我會把它添加到這裏,但我認爲它增加了不必要的混亂。 – fejfo