我正在学习 Python 3。据我所知,Python 3 中的 print() 函数返回None。我可以在这里找到一个网站,说同样的话。在这种情况下,当我们在两个print()函数之间应用“和”运算符时,它应该打印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。我用“或”运算符尝试了这个,结果更让我惊讶。None or None应该返回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。这种行为背后的原因是什么?“或”运算符不应该只返回一个值吗?请帮帮我。
2 回答
慕莱坞森
TA贡献1810条经验 获得超4个赞
“返回”和“打印”是不同的东西。如果调用,print
将始终返回None
并打印您提供的任何内容。令您惊讶的是布尔运算符的行为,而不是print
.
x or y
被定义为“ x
if truey 的值;else 的值y
”。
x and y
被定义为“x
如果为假的值;否则为”的值y
。
至关重要的是,y
如果x
符合运营商的标准,则不会对其进行评估。这称为短路,对于and
和or
运算符来说非常独特。
现在,None
是一个假值;因此None and y
永远不会评估y
,而None or y
将始终评估y
。这就是为什么您print(...) and print(...)
打印一个值(第二个print
由于短路而未执行)以及为什么print(...) and print(...)
打印两个值的原因(两者都需要评估以确定 的结果and
,因为不可能发生短路)。
添加回答
举报
0/150
提交
取消