函数作为返回值,Python

时间:2014-02-07 09:36:59

标签: python function

我要返回一个函数:

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) 


如果钥匙的号码不同,我应该得到一个假,但我没有得到错误的地方

3 个答案:

答案 0 :(得分:4)

我认为你想要的是:

def make_adder(n):
    return lambda x: n + x

据我所知,make_adder(n)应该返回一个函数,将n添加到调用它的内容中。但是你所做的就是返回lambda n: n+1,这是一个将1加到调用它的函数。

更多解释:在第一个示例中,add1make_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