结果很奇怪是不是?
表达式从左往右运算,1和"heaven"做and的结果是"heaven",再与"hell"做or的结果是"heaven";0和"heaven"做and的结果是0,再与"hell"做or的结果是"hell"。
抛开绕人的and和or的逻辑,你只需记住,在一个bool and a or b语句中,当bool条件为真时,结果是a;当bool条件为假时,结果是b。
有学过c/c++的同学应该会发现,这和bool?a:b表达式很像。
空字符是False
所以 ‘’ and ‘Hell’ 时,在前半段就直接可以得出结果了,于是就是a的结果作者: 脑子有音乐 时间: 2014-6-27 20:45
a = ""
b = "hell"
c = (True and [a] or [b])[0]
print c
--------------------------------
[0] 加了是空白 不加是['']
老师的本意是要我们看到a的值吗?作者: crossin先生 时间: 2014-6-28 16:58
脑子有音乐 发表于 2014-6-27 20:45
a = ""
b = "hell"
c = (True and [a] or )[0]