【原】python语言的 and-or 常常被用来实现类C语言中的三元运算符 : ? , 更为骚气的写法是 xxx and xxx or xxx and xxx or xxx,这样就可以可以做到一行实现多个表达式啦。 Code: (1) def Judge(a): if a > 10: return "big" elif a > 5: return "middle" else: return "small" (2) def judge (b) : return b > 10 and "big" or b > 5 and "middle" or "small" (1)和(2)所实现的效果是一样的
但要注意的是 and-or 并不完全等价于三元运算符,因为a and b or c, 如果b是个假值,那么就将返回c(电脑比较懒惰- -!)
不过有技巧能够实现: def choose(bool, a, b):
return (bool and [a] or )[0] 如果bool为真就返回[a], 不然就返回. 真如上面说的 电脑很懒惰 对于and ,它会先 判断and前的值是否为真,如果为真, 那么xxx and xxx 就为真。