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 definedand / 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]