Skip to main content
 首页 » 编程设计

python之表达式 "print(1) and print("0") 在 python 中返回什么

2025年05月04日12powertoolsteam

我正在学习 Python 3。据我所知,Python 3 中的 print() 函数返回 None。我可以找到一个网站 here说的是同一件事。
在那种情况下,当我们在两个 print() 函数之间应用“and”运算符时,它应该打印 None 因为 None and None = None .我尝试了各种打印功能,结果似乎与我的预期大不相同。这是结果。我在 Microsoft Visual Studio 2015 中测试了它们

print(0) 和 print(0) 打印 0。
print(0) 和 print(1) 打印 0。
print(1) 和 print(0) 打印 1。
print(1) 和 print(1) 打印 1。

我用“或”运算符试了一下,结果更让我吃惊。
None 或 None 应返回 None。这是结果。

print(0) 或 print(0) 打印 0 0。
print(0) 或 print(1) 打印 0 1。
print(1) 或 print(0) 打印 1 0。
print(1) 或 print(1) 打印 1 1。

这种行为背后的原因是什么? “或”运算符不应该只返回一个值吗?请帮帮我。

请您参考如下方法:

“返回”和“打印”是不同的东西。 print 将始终返回 None 并打印您提供的任何内容(如果被调用)。让您感到惊讶的是 bool 运算符的行为,而不是 print。

x 或 y 定义为“如果为真,则为 x 的值;否则为 y 的值”。

x 和 y 定义为“如果为假,则为 x 的值;否则为 y 的值”。

重要的是,如果 x 符合运算符的标准,则不会评估 y。这称为短路,对于 and 和 or 运算符来说非常独特。

现在,None 是一个伪值;因此 None and y 永远不会评估 y,而 None or y 将始终评估 y。这就是为什么您的 print(...) 和 print(...) 打印一个值的原因(第二个 print 由于短路而未执行) ,以及为什么 print(...) 和 print(...) 打印两个(都需要评估以确定 和 的结果,因为没有短路是可能的)。