scarecrowcxc
楼上回答的挺详细,是根据函数的返回值来排除的:
这里还有个点就是:非布尔值的逻辑运算
1. 对于非布尔值进行逻辑运算(与和或),它是先将其转换为布尔值,然后做逻辑运算
2. 最终返回的是原值
例如:result = 'test' and 'str' # 返回 'str'
result = 'str' and 'test' # 返回 'test'
result = None and 'test' # 返回 None
result = '' and 'test' # 返回 ''
( 例子中, 'test' 和 'str' 转换成布尔值都是True,
而 '' , None 转换成布尔值是False)
可以总结为 与运算是在找False, 或运算是在找True
对于 return s and len(s.strip()) > 0
s 和 表达式(len(s.strip()) > 0)在做非布尔值的逻辑运算 ,再结合楼上的回答,不知能否理解