if ... elif... else: 他们垂直对齐,具有相同缩进,如果所有的测试都为假的话,就执行else部分。
if / else 三元表达式 A=Y if X else Z 等价于 A = ((X and Y) or Z)。首先明确的是Y与Z因为都是值,或者其它类型。所以默认就是为真。具体and/or的操作见下面真值测试
>>> branch = {'spam': 1.24,
... 'ham': 1.99,
... 'egg': 0.33}
>>> print(branch.get('spam', 'bad choice')) #字典的get方法调用或捕捉异常,最后是一个默认值
1.24
>>> if choice in branch:
... print(branch[choice])
... else:
... print('bad choice') #等价与对上面的式子类switch实现
真值测试
1:任何非零数字或非空对象都为真
2:数字0,空对象[],以及特殊对象None都被认为假
3:==,>=等测试都会返回布尔值
4:True代表1,False代表0,注意T,F都必须大写
>>> while true:
... print('hello world')
... break
...
NameError: name 'true' is not defined
and / or 的用法
1:and 和 or 返回操作的对象, or是第一个为真的对象,and返回第一个为假的对象
2:x = A or default 如果A为真(或非空)的话,将X设置为A,否则为default
4:and/or 同时还可以用来进行条件的连接5:and 和 or 还可以连接两个语句
>>> 0 or [] and 5
[]
>>> 2 or 4,6 or 9
(2, 6)
>>> x = 0 or 6
>>> x
6
>>> if 1>0 and 5<6:
... print("true")
...
true
>>> [print(i) and i for i in range(3)]
0
1
2
[None, None, None] #因为print()的结果都是None,所以表达式的值为3个None
>>> [i and print(i) for i in range(3)]
1
2
[0, None, None] #因为第一次i=0为假,所以表达式的值就为0
>>> [print(i) or i for i in (2,3,4)] #这是最好的方式,既能输出结果,同时也给表达式赋值了
2
3
4
[2, 3, 4]