我要返回一个函数:
add1 = make_adder(1)
add1(5)
#Result: 6
make_adder(5)(10)
#Result: 15
我目前有
def make_adder(n):
return lambda n: n+1
add1 = make_adder(1)
**错误指出!! *
BUT 我有另一个类似的问题,我需要检查数字在哪里相互匹配。
def is_same(x,y):
return x == y
def make_verifier(key):
return lambda n: is_same(262010771,key )
check_password = make_verifier(262010771)
如果钥匙的号码不同,我应该得到一个假,但我没有得到错误的地方
答案 0 :(得分:4)
我认为你想要的是:
def make_adder(n):
return lambda x: n + x
据我所知,make_adder(n)
应该返回一个函数,将n
添加到调用它的内容中。但是你所做的就是返回lambda n: n+1
,这是一个将1加到调用它的函数。
更多解释:在第一个示例中,add1
或make_adder(1)
是一个向传入的值加1的函数。在第二个示例中:{{1} }是一个函数(它增加了5),并且10被传递给这个函数,得到5 + 10。
make_adder(5)
本身就是一个函数,可以创建一个函数,它将n添加到传入的值中。
答案 1 :(得分:1)
Python 2.7.5+ (default, Sep 19 2013, 13:48:49)
>>> class Adder(int):
... def __call__(self, number):
... return self.__class__(self + number)
...
>>> Adder(5)(10)
15
>>> Adder(5)(10)(15)
30
>>>
答案 2 :(得分:0)
def is_same(x,y):
return x == y
def make_verifier(key):
return lambda n: is_same(n,key)
check_password = make_verifier(262010771)
您应该放置262010771
而不是加上n
号码,以便在n
之后灵活地更改check_password(262010771)
,如果不是,则{}已修复且始终为 True 。