"print(1) and print("0") return 在 python 中的表达式是什么?
What does the expression "print(1) and print("0") return in python?
正在学习Python 3、据我所知,Python3returnNone
中的print()函数。我可以找到一个网站 here 说同样的话。
在那种情况下,当我们在两个 print()
函数之间应用 "and" 运算符时,它应该打印 None
因为 None and None = None
。我尝试了各种打印功能,结果似乎与我的预期大不相同。这是结果。我在 Microsoft Visual studio 2015
中测试了它们
print(0) and print(0)
打印 0
.
print(0) and print(1)
打印 0
.
print(1) and print(0)
打印 1
.
print(1) and print(1)
打印 1
。
我用 "or" 运算符尝试了这个,结果更让我吃惊。
None or None
应该 return None
。这是结果。
print(0) or print(0)
打印 0 0
.
print(0) or print(1)
打印 0 1
.
print(1) or print(0)
打印 1 0
.
print(1) or print(1)
打印 1 1
.
这种行为背后的原因是什么? "or" 运算符 return 不应该只有一个值吗?请帮帮我。
逻辑运算符执行short-circuit evaluation.
这意味着对于 and
,右侧 os 仅在左侧为 "true" 时才计算。对于 or
,如果左侧是 "true",则右侧是 而不是 评估。
在 Python 中,值 None
不是 "true",and
语句的右侧将不会执行。
与 or
类似,因为左侧不是 "true",右侧将执行。
至于您得到的输出,它是 print
函数调用的输出。使用 and
您只能从左侧 print
调用中获得输出,使用 or
您可以从两个调用中获得输出。
"Returning" 和 "printing" 是不同的东西。 print
将始终 return None
并打印您提供的任何内容(如果调用)。让您感到惊讶的是布尔运算符的行为,而不是 print
.
x or y
定义为 "The value of x
if truthy; else, the value of y
".
x and y
定义为 "The value of x
if falsy; else, the value of y
".
重要的是,如果 x
符合运算符的标准,则不会评估 y
。这称为短路,对于 and
和 or
运算符来说非常独特。
现在,None
是一个虚假值;因此 None and y
永远不会评估 y
,而 None or y
将始终评估 y
。这就是为什么您的 print(...) and print(...)
打印一个值(第二个 print
由于短路而未执行),以及为什么 print(...) and print(...)
打印两个(两者都需要评估以确定and
的结果,因为不可能发生短路)。
正在学习Python 3、据我所知,Python3returnNone
中的print()函数。我可以找到一个网站 here 说同样的话。
在那种情况下,当我们在两个 print()
函数之间应用 "and" 运算符时,它应该打印 None
因为 None and None = None
。我尝试了各种打印功能,结果似乎与我的预期大不相同。这是结果。我在 Microsoft Visual studio 2015
print(0) and print(0)
打印 0
.
print(0) and print(1)
打印 0
.
print(1) and print(0)
打印 1
.
print(1) and print(1)
打印 1
。
我用 "or" 运算符尝试了这个,结果更让我吃惊。
None or None
应该 return None
。这是结果。
print(0) or print(0)
打印 0 0
.
print(0) or print(1)
打印 0 1
.
print(1) or print(0)
打印 1 0
.
print(1) or print(1)
打印 1 1
.
这种行为背后的原因是什么? "or" 运算符 return 不应该只有一个值吗?请帮帮我。
逻辑运算符执行short-circuit evaluation.
这意味着对于 and
,右侧 os 仅在左侧为 "true" 时才计算。对于 or
,如果左侧是 "true",则右侧是 而不是 评估。
在 Python 中,值 None
不是 "true",and
语句的右侧将不会执行。
与 or
类似,因为左侧不是 "true",右侧将执行。
至于您得到的输出,它是 print
函数调用的输出。使用 and
您只能从左侧 print
调用中获得输出,使用 or
您可以从两个调用中获得输出。
"Returning" 和 "printing" 是不同的东西。 print
将始终 return None
并打印您提供的任何内容(如果调用)。让您感到惊讶的是布尔运算符的行为,而不是 print
.
x or y
定义为 "The value of x
if truthy; else, the value of y
".
x and y
定义为 "The value of x
if falsy; else, the value of y
".
重要的是,如果 x
符合运算符的标准,则不会评估 y
。这称为短路,对于 and
和 or
运算符来说非常独特。
现在,None
是一个虚假值;因此 None and y
永远不会评估 y
,而 None or y
将始终评估 y
。这就是为什么您的 print(...) and print(...)
打印一个值(第二个 print
由于短路而未执行),以及为什么 print(...) and print(...)
打印两个(两者都需要评估以确定and
的结果,因为不可能发生短路)。