這符合短路計算嗎
a='python' b='' print 'hello',b or a ? print'hello',b or a and 'world' 為何第一個輸出a第二個不是短路而是輸出'world'呢。a是字符串類型不是布爾類型吧
a='python' b='' print 'hello',b or a ? print'hello',b or a and 'world' 為何第一個輸出a第二個不是短路而是輸出'world'呢。a是字符串類型不是布爾類型吧
2017-06-08
舉報
2017-06-08
字符串類型參與邏輯運算,只要字符串不為'',那么轉換為True。
b or a 為真,and 后面要繼續判斷,直到'world'為真,才能確定整個邏輯表達式為真,所以沒毛病啊
2017-06-08
我只給你解釋第二個print,你這么想,b or a的結果先看b,很顯然b為空,所以是false;因此b or a的結果就看a了,如果a是false,那結果就是false,如果a是除了“”、0、none之外的值,那這部分邏輯表達式的值都是a的值,因此b or a的結果很顯然是'python';然后再考慮a and 'world',即是考慮'python' and 'world'的值,首先‘python’不是false,那么結果就看‘world’了,所以最后的結果是'world'。
完畢!