提问人:pfan 提问时间:9/25/2022 最后编辑:pfan 更新时间:9/25/2022 访问量:28
print() 中使用辅助函数短路 [复制]
Short-circuiting with helper function in print() [duplicate]
问:
有人可以解释为什么以下代码在控制台中显示为“极客”吗?
def check():
return "geeks"
print(0 or check() or 1)
我假设 Python 识别布尔运算符,从而处理 0 == False?
那么,这是否意味着每次使用布尔运算符时,参数都会被视为 True/False 值?
答:
1赞
CryptoFool
9/25/2022
#1
“极客”将被打印的原因是定义如下:or
Python 或运算符返回计算结果为 true 的第一个对象 或表达式中的最后一个对象,无论其真值如何。
当返回字符串“geeks”时,该值的计算结果为,因为它是一个非空字符串。然后,该值是表达式中计算结果为 的第一个项,因此该值是整个表达式的结果,打印的内容也是如此。check()
True
or
True
评论
0赞
pfan
9/25/2022
上面答案的问题是“0 是否总是计算为 ”。我不小心删除了它。False
1赞
CryptoFool
9/25/2022
是的,没错。任何空集合的计算结果也为 False。任何非空集合的计算结果均为 True。字符串是字符的集合,因此空字符串的计算结果为 False,非空字符串的计算结果为 True。请注意,这里的“计算结果”只是讨论确定如何计算带有布尔运算符的表达式时会发生什么。更正确的是说任何表达式要么是“真实的”,要么是“非真实的”,因为正如你从这个例子中看到的那样,最终的“geeks”字符串被“评估”为一个字符串。因此,非空字符串始终是“真实”的。
评论
geeks
geeks
NameError: name 'geeks' is not defined
geeks
or
True
False
print
print
0 or "geeks" or 1
print("geeks")