【问题标题】:Python Passing values to a return statement functionPython将值传递给return语句函数
【发布时间】:2013-10-12 19:07:39
【问题描述】:

首先,很抱歉标题令人困惑,但这是我能想到的描述它的唯一方式。我最近收到的一份课程作业问了一个问题,即定义一个带有一个参数(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 预设为 lambda 的情况下实现它的,也许我只是在奇怪地看着它明显的。感谢您的回复

【问题讨论】:

  • 为什么你所有的句子都跑题了?
  • 很抱歉,我从来没有听说过run-on这个词,你能解释一下吗?
  • 当你把所有的句子都写成这样,没有逗号或其他任何东西时,这真的很烦人。
  • 啊抱歉,我已经习惯了写作的方式,下次会考虑到我的句子可能会有点啰嗦。

标签: python lambda return


【解决方案1】:

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

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

做同样的事情。

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

【讨论】:

  • 看,这就是我的意思,我应该猜到了,但分析的东西太多了,他们对两个函数的处理方式,一个返回另一个,等等,继续尝试通过分别定义两个函数然后相互调用它们来做到这一点,应该有他们没有说我可以在另一个内部定义它。非常感谢
猜你喜欢
  • 2011-11-28
  • 2019-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-25
  • 2012-11-22
  • 1970-01-01
相关资源
最近更新 更多