Python中0 == (1 or 0)返回False的原因及判断函数返回值为1或0的正确方法
为什么
0 == (1 or 0)返回False?以及正确的判断方式 哈哈,这个坑我刚学Python的时候也踩过!让我给你掰扯清楚为啥会这样,以及怎么正确实现你要的判断。
问题根源:Python中or运算符的工作机制
你可能以为or会返回布尔值True/False,但其实Python的or是短路求值并返回操作数本身,而不是布尔结果。它的规则是:
- 从左到右依次检查操作数,返回第一个“真值”(truthy value)
- 如果所有操作数都是“假值”(falsy value),就返回最后一个假值
在Python里,0属于假值,1属于真值,所以1 or 0会直接返回第一个真值1,而不是True。这样你的原表达式就变成了0 == 1,结果自然是False。
举几个例子帮你理解:
1 or 0→ 返回1(第一个是真值,直接返回)0 or 1→ 返回1(第一个是假值,取第二个真值)0 or 0→ 返回0(全是假值,取最后一个)"" or "Python"→ 返回"Python"(空字符串是假值)
正确判断返回值为1或0的方式
要判断函数返回的整数是1或0,有两种常用且清晰的写法:
方式1:拆分逻辑或条件
直接把两个相等判断用or连接,每个判断都是独立的布尔比较:
# 假设your_func是你要调用的函数 result = your_func() if result == 0 or result == 1: print("返回值是0或1,符合要求") else: print("返回值不符合要求")
这种写法直观易懂,适合目标值数量少的场景。
方式2:检查值是否在集合中
把0和1放进一个集合(或列表),用in运算符判断:
result = your_func() if result in {0, 1}: print("返回值是0或1,符合要求") else: print("返回值不符合要求")
这种写法在需要判断的目标值较多时更简洁,而且集合的查找效率很高。
记住,Python的or和and都是返回操作数本身,而不是纯布尔值,这和一些其他语言的逻辑运算符不一样,很容易踩坑哦~
内容的提问来源于stack exchange,提问作者JC123
相关产品推荐
相关产品推荐

