Python,”;“打印”;及;return";导致了不同的布尔逻辑
我最近开始通过Sololearn学习python,并开始学习。为了更好地理解代码,我将其简化为:Python,”;“打印”;及;return";导致了不同的布尔逻辑,python,Python,我最近开始通过Sololearn学习python,并开始学习。为了更好地理解代码,我将其简化为: def is_even(x): return x def is_odd(x): return not is_even(x) print(is_odd(2)) 返回的非偶数(x)为布尔值,结果为False,当它传递给def is_偶数(x):时,它仍将返回False。 但是,当我将返回x更改为打印(x) 结果将是: 2 True 这是怎么发生的?在返回非偶数(x)和打印(x)之间发
def is_even(x):
return x
def is_odd(x):
return not is_even(x)
print(is_odd(2))
返回的非偶数(x)
为布尔值,结果为False
,当它传递给def is_偶数(x):
时,它仍将返回False。
但是,当我将返回x
更改为打印(x)
结果将是:
2
True
这是怎么发生的?在返回非偶数(x)
和打印(x)
之间发生了什么。
谢谢你也许这会让你走上正轨:
def returning(x):
return x
def printing(x):
print(x)
returning(2)
# 2
printing(2)
# 2
a = returning(2)
a
# 2
b = printing(2)
2
b
# None
不同之处在于return
从函数
返回一个值,该值可用于传递给另一个函数/变量print
只打印出信息,但不返回任何值,这就是为什么b
不保留任何值,但在分配过程中b=printing(2)
它立即打印出传递给它的内容,当a=returning(2)
没有返回时,它将值分配给变量a
在python中,None
是错误的
None == False
# False
None == True
# False
not None == True
# True
您所缺少的是甚至返回bool
而不是传递的参数:
def is_even(x):
return x % 2 == 0
def is_odd(x):
return not is_even(x)
is_odd(3)
# True
您的代码没有任何递归!
函数is_even()返回传递给它的任何内容,如整数、字符或其他任何内容。
函数is_odd()返回一个布尔值;但请注意非布尔值的等效布尔值。
例如,值1、'example'、[1,2,3]和。。。具有真正的布尔值以及0、[]、None和。。。具有假布尔值。
因此,如果您通过“test”或5 to is_odd(),它将返回False请编辑缩进以匹配您的实际代码。另外,您的代码中没有递归。第二段代码不符合您的描述,根本不运行。(与第一个相同,但缩进已断开。)如果函数体中只有print
语句,则函数隐式返回None
,该值为假值。因此,not None
是True
,应该是预期的。也可以尝试print(is_偶数(2))
,然后查看not None
是什么。not None
=True
。由于没有任何return语句,所以函数返回NONE
def is_even(x):
return x % 2 == 0
def is_odd(x):
return not is_even(x)
is_odd(3)
# True