我这里有一些代码:
m = None
n = None
if not m:
print "Something happens"
>>> Something happens
Run Code Online (Sandbox Code Playgroud)
如果我做:
if not m and n:
print "Something happens"
Run Code Online (Sandbox Code Playgroud)
什么都没发生.
但我能做到:
m, n = 1,2
if m and n:
print "Something happens"
>>> Something happens
Run Code Online (Sandbox Code Playgroud)
为什么如果和不处理相同的方式?"如果不是",不接受'和'陈述?
谢谢
我想您正在寻找这篇文章:真值测试
\n\n\n\n\n任何对象都可以测试真值,用于 if 或 while 条件或作为下面布尔运算的操作数。以下值被视为错误:
\n\n\n
\n\n- 没有任何
\n- 错误的
\n- 任何数字类型的零,例如
\n0,0L,0.0,0j。- 任何空序列,例如
\n\'\',(),[]。- 任何空映射,例如
\n{}.- 用户定义类的实例,如果该类定义了
\n__nonzero__()or__len__()方法,则该方法返回整数零或布尔值 False。所有其他值均被视为 true \xe2\x80\x94,因此许多类型的对象始终为 true。\n 除非另有说明,具有布尔结果的运算和内置函数始终返回
\n0orFalsefor false 和1orTruefor true。(重要的例外:布尔运算 or 和 始终返回其操作数之一。)
特别是下一章解释了您的情况(布尔运算 \xe2\x80\x94 and, or,not):
\n\nnot 的优先级低于非布尔运算符
\n
| 归档时间: |
|
| 查看次数: |
9718 次 |
| 最近记录: |