岁月如此这般 发表于 2024-11-11 17:59:46

关于函数

原题是
def funx(x):
        return lambda y : x * y

temp= funx(8)
temp(3)
这个结果是24
不知道这个计算过程是什么?我知道,这个是这个funx(8)和3的×。但是我不知道这个第一个返回是哪个?
有没有哪一个大神解答

FishC 发表于 2024-11-11 17:59:58

这个问题涉及到Python中的闭包和匿名函数(lambda)的使用。我们来一步一步理解代码:

1. **定义函数 `funx(x)`**:
   def funx(x):
       return lambda y: x * y
   `funx` 是一个函数,它接受一个参数 `x`,并返回一个匿名函数(lambda 函数)`lambda y: x * y`。这个 lambda 函数接受参数 `y`,返回值是 `x * y`。

2. **调用 `funx(8)`**:
   temp = funx(8)
   当你调用 `funx(8)` 时,实际上是用 `8` 这个值替换了 `funx` 函数中的 `x`,然后返回一个新的 lambda 函数,这个函数可以表示为 `lambda y: 8 * y`。
   此时,`temp` 是这个新的 lambda 函数的引用。

3. **调用 `temp(3)`**:
   temp(3)
   `temp` 是一个可以接受一个参数 `y` 的函数。调用 `temp(3)` 就是调用 `lambda y: 8 * y`,此时 `y` 被替换为 `3`。

   因此,计算 `8 * 3`,结果是 `24`。

总结一下:`funx(8)` 返回了一个新的函数,这个函数本质上是 `lambda y: 8 * y`。随后,`temp(3)` 就是执行这个函数,最终返回 `8 * 3 = 24`。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

qiuyouzhi 发表于 2024-11-11 19:13:37

func(x) 的返回值也是一个函数。
func(8) 的结果就是 lambda y : 8 * y
把这个函数赋值给 temp, 所以现在 temp 就是一个函数,接受一个参数 y.
调用 temp, 传入 3, 所以 y 就是 3, 那么返回值就是 8 * 3 = 24

jackz007 发表于 2024-11-11 20:21:07

本帖最后由 jackz007 于 2024-11-11 20:28 编辑

def funx(x):
    return lambda y : x * y
      当执行
temp = funx(8)
      时,函数会返回
lambda y : x * y
      由于 x = 8,所以得到
temp = lambda y : 8 * y
      temp 是一个形式参数为 y 的 lambda 函数
      当用参数 3 调用 temp 时,会得到计算结果:
temp(3) = 8 * 3 = 24


页: [1]
查看完整版本: 关于函数