0
我很困惑,爲什麼下面的代碼工作。何時評估self.param?封閉功能在這裏?lambda中的自我傳遞給免費函數
from collections import namedtuple
T = namedtuple("T","a b")
def validate(condition):
t = T(1, 2)
return condition(t)
class C:
def __init__(self, param):
self.param = param
def test(self):
condition = lambda v: v.a==1 and v.b==2 if self.param else v.b!=2
print(validate(condition))
c = C(True)
c.test()
我應該寫:
condition = lambda v, param=self.param: v.a==1 and v.b==2 if param else v.b!=2
如果是這樣,爲什麼?