b='' print 'hello',b or'python'輸出結(jié)果
b='' ? ?print 'hello',b or'python'輸出結(jié)果不是應(yīng)該為:hello ?
實(shí)際輸出結(jié)果:hello python
這是為什么
b='' ? ?print 'hello',b or'python'輸出結(jié)果不是應(yīng)該為:hello ?
實(shí)際輸出結(jié)果:hello python
這是為什么
2016-07-20
舉報(bào)
2016-07-20
正如樓上所提到的短路計(jì)算。這句代碼簡化為b = print f1, f2 or f3。應(yīng)該經(jīng)過如下運(yùn)算:
運(yùn)行f1,即print ‘hello’
計(jì)算f2 or f3,即b or ‘python’。由于b= '',所以空;這句話等于‘python’。所以繼續(xù)print ‘python’
這樣打印結(jié)果就是 hello python
2016-07-20
在這個(gè)代碼里,b的值為空值,既b為False。所以當(dāng)b or 'Python'時(shí),返回的值是'Python'
2016-07-20
要解釋上述結(jié)果,又涉及到 and 和 or 運(yùn)算的一條重要法則:短路計(jì)算。
1.?在計(jì)算 a and b 時(shí),如果 a 是 False,則根據(jù)與運(yùn)算法則,整個(gè)結(jié)果必定為 False,因此返回 a;如果 a 是 True,則整個(gè)計(jì)算結(jié)果必定取決與 b,因此返回 b。
2. 在計(jì)算 a or b 時(shí),如果 a 是 True,則根據(jù)或運(yùn)算法則,整個(gè)計(jì)算結(jié)果必定為 True,因此返回 a;如果 a 是 False,則整個(gè)計(jì)算結(jié)果必定取決于 b,因此返回 b。