执行此代码时,我得到两个输出。一个是正​​确的,另一个是NONE。代码有没有错误?

While executing this code I am getting two output. One is correct one and the other is NONE. Is there any error in the code?

刚开始学python。在了解 lambda 函数时,我尝试执行这段代码。 我得到两个输出。一个是正​​确的,另一个是 NONE.

Here is the code and its output.

没有错误。 python return 中的每个函数都是一个值。如果没有显式 return 语句,则 return 值始终为 None(lambda 函数显式 return 它们包含的代码行的值)。您的函数 return 是 print() 函数的值,它(猜猜是什么)return 是 None。所以,当你写

print(oddeven(5))

发生以下情况:
- 解释器运行 oddeven 的代码,其中包括对 print 的调用 > 第一行打印到控制台
- 解释器然后在 oddeven 的 return 值(即 None)上调用 print > 第二行被打印出来

要解决此问题 - 要么不要在 oddeven 中调用 print,而是在 return 字符串中调用,或者不要在 oddeven 中调用 print,而只是像那样调用 oddeven

oddeven(5)
oddeven(6)

此代码工作正常:

oddeven = lambda x: print('{} is even'.format(x)) if x % 2 == 0 else print('{} is odd'.format(x))

oddeven(5)
oddeven(6)

输出

5 is odd
6 is even

我所做的只是删除模数检查周围不必要的括号并删除您的 lambda 函数中已经存在的冗余打印语句