鱼C论坛

 找回密码
 立即注册
查看: 1705|回复: 4

为何上面那个有返回,下面那个没有返回?

[复制链接]
发表于 2023-6-7 20:57:38 | 显示全部楼层 |阅读模式

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

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

x
>>> lambda x: 2 * x + 1
<function <lambda> at 0x000001C68B233438>
>>> g = lambda x: 2 * x + 1
>>> g(5)
11


>>> lambda x: x if x % 2 else None
<function <lambda> at 0x00000227DA115438>
>>> a = lambda x: x if x % 2 else None
>>> a(8)
>>>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-6-7 21:00:13 | 显示全部楼层
上面的 lambda 函数 为 g = lambda x: 2 * x + 1,它会对输入的参数 x 进行计算并返回结果,因此调用 g(5) 的时候会得到返回值 11。

而下面的 lambda 函数为 a = lambda x: x if x % 2 else None,它的逻辑是:当输入的参数 x 是奇数的时候,返回 x,否则返回 None。所以,当我们调用 a(8) 的时候,由于 8 是偶数,根据 lambda 函数的定义,应该返回 None,因此没有返回值。

需要注意的是,在 Python 中,默认情况下,如果函数没有使用 return 语句明确地指定返回值,那么 Python 会隐式地将函数结果设为 None。但是在这里,lambda 函数显式地指定了返回值(即 x if x % 2 else None),因此不能依赖于 Python 的默认行为。

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

使用道具 举报

 楼主| 发表于 2023-6-7 21:16:01 | 显示全部楼层
sfqxx 发表于 2023-6-7 21:00
上面的 lambda 函数 为 g = lambda x: 2 * x + 1,它会对输入的参数 x 进行计算并返回结果,因此调用 g(5)  ...

当输入的参数 x 是奇数的时候,返回 x,否则返回 None。<---偶数不是有返回值None吗?

当我们调用 a(8) 的时候,由于 8 是偶数,根据 lambda 函数的定义,应该返回 None,所以我理解成调用 a(8) 的时候返回None
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-7 21:56:36 From FishC Mobile | 显示全部楼层
在Python中,8%2的结果为0,即取8÷2的余数。而0代表的是False(可以通过bool(0)验证,1代表的是True),所以会执行else代码块返回None
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-7 22:20:33 | 显示全部楼层
下面的有返回只不过是None而已嘛,print一下就知道咯
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-22 21:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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