Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python,”;“打印”;及;return";导致了不同的布尔逻辑_Python - Fatal编程技术网

Python,”;“打印”;及;return";导致了不同的布尔逻辑

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)之间发

我最近开始通过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 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