Python将值传递给return语句函数

时间:2013-10-06 00:08:41

标签: python lambda return

首先,对于令人困惑的标题感到抱歉,但这是我能想到描述它的唯一方式。我最近收到的一篇课程中提到了一个问题,即用一个参数(x)定义一个函数,它返回另一个带有一个参数(y)的函数,它本身会返回x * y。我们被要求使用普通函数或我选择lamdas的lambda来写出来,写下这个:

def create_multiplier (x):
   return lambda y: y * x

input1 = int(raw_input("Please enter your initial number for our multiplier"))
multi = create_multiplier(input1)
input2 = int(raw_input("Please enter your second number for our multiplier"))
print input1, " times by ", input2, " = " ,multi(input2)

然而我现在很好奇他们如何期望我们只使用函数来实现它,最初我想也许你会在第一个函数中将你的第一个数字传递给x,然后传递一个数字,我们的第二个函数为y,并且因为我们在第一个函数内部返回第二个函数,所以我们可以像使用嵌套变量一样使用x。这快速击落了

我理解你是否愿意回复,因为这是课程作业,但这让我很好奇你是如何在不预先设定我们的x的情况下实现它的,也许我只是奇怪地看着它而且它是公然的明显。谢谢你的回复

1 个答案:

答案 0 :(得分:4)

lambda只是一个令人讨厌的;-)编写函数的快捷方式(def)。所以,例如,

def create_multiplier(x):
    def inner_function(y):
        return x*y
    return inner_function

做同样的事情。

后来:不是相当同样的事情。你的lambda实际上返回y*x,而不是x*y; - )