为何上面那个有返回,下面那个没有返回?
>>> 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)
>>> 上面的 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 的默认行为。
求最佳答案{:10_254:} 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 在Python中,8%2的结果为0,即取8÷2的余数。而0代表的是False(可以通过bool(0)验证,1代表的是True),所以会执行else代码块返回None 下面的有返回只不过是None而已嘛,print一下就知道咯
页:
[1]