python - 为什么这个 if 语句会成功?
问题描述
下面的 if 语句成功并打印 s 的值。但是,如果您删除 : 和/或空格条件,它就会失败。我很困惑为什么它首先会成功。
s="( )"
if ("if" and ":" and " ") in s:
print(s)
解决方案
括号中的内容是一个计算结果为单个值的表达式:
>>> "if" and ":" and " "
' '
>>> _ in "( )"
True
>>> ' ' in "( )"
True
>>> ("if" and ":" and " ") == ' '
True
and
就像普通的 boolean AND
,但在类固醇上:
>>> 0 and 0
0
>>> 0 and 1
0
>>> 1 and 0
0
>>> 1 and 1
1
>>> 0 and 'hello'
0
>>> 'hello' and 0
0
>>> 'hello' and 'hello'
'hello' # WAIT. That's illegal!
因此,and
返回真实对象链中的最后一个真实对象(或它遇到的第一个非真实对象)。请注意,它返回一个object,而不是严格的布尔值,就像二进制 AND 那样。
推荐阅读
- c# - 从 oracle sql devloper 中的 NCLOB 数据类型列复制时数据丢失/被截断
- r - 为什么 lapply(file_list, function(i){} 不起作用?
- ethereum - addr.transfer(1 ether) 的可靠性错误
- sharepoint - 从 SharePoint 列表提取到 Power BI 的数据不正确
- .net-core - DisplayAttribute 在 Dotnet Core 伙伴类中不起作用
- java - 如何使用 Hibernate 检索 SQL 错误消息
- node.js - 如何运行另一个 .js 文件的内容?
- java - 我想使用 eclipse java 代码连接到 Sql Developer Database
- rust - 没有为 impl 实现特征 std::ops::Try
- algorithm - 插入排序算法许可操作