鱼C论坛

 找回密码
 立即注册
查看: 142|回复: 3

[已解决]关于函数

[复制链接]
发表于 2024-11-11 17:59:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

temp  = funx(8)
temp(3)
这个结果是24
不知道这个计算过程是什么?我知道,这个是这个funx(8)和3的×。但是我不知道这个第一个返回是哪个?
有没有哪一个大神解答
最佳答案
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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-11-11 19:13:37 | 显示全部楼层
func(x) 的返回值也是一个函数。
func(8) 的结果就是 lambda y : 8 * y
把这个函数赋值给 temp, 所以现在 temp 就是一个函数,接受一个参数 y.
调用 temp, 传入 3, 所以 y 就是 3, 那么返回值就是 8 * 3 = 24
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-21 19:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表