Python 在执行这段代码时,我得到两个输出。一个是正确的,另一个是不正确的。代码中有错误吗?
我刚开始学习python。在学习lambda函数时,我尝试执行此代码。 我得到两个输出。一个是正确的,另一个说没有Python 在执行这段代码时,我得到两个输出。一个是正确的,另一个是不正确的。代码中有错误吗?,python,python-3.x,lambda-calculus,Python,Python 3.x,Lambda Calculus,我刚开始学习python。在学习lambda函数时,我尝试执行此代码。 我得到两个输出。一个是正确的,另一个说没有 没有错误。python中的每个函数都返回一个值。如果没有显式return语句,则返回值始终为None lambda函数显式返回其包含的代码行的值。您的函数返回一个打印函数的值,该函数猜测什么函数返回无。所以,当你写作的时候 print(oddeven(5)) 发生以下情况: -解释器运行odd偶数代码,其中包括调用print>first line打印到控制台 -然后,解释器对od
没有错误。python中的每个函数都返回一个值。如果没有显式return语句,则返回值始终为None lambda函数显式返回其包含的代码行的值。您的函数返回一个打印函数的值,该函数猜测什么函数返回无。所以,当你写作的时候
print(oddeven(5))
发生以下情况:
-解释器运行odd偶数代码,其中包括调用print>first line打印到控制台
-然后,解释器对odd偶数的返回值调用print,该值为None>第二行被打印
要解决此问题,请不要在odd偶数中调用print,而是返回字符串,或者不要在odd偶数中调用print,而只是像这样调用odd偶数:
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)
输出
我所做的只是删除模校验周围不必要的括号,并删除lambda函数中已经存在的多余的print语句
5 is odd
6 is even