點(diǎn)評:典型的送人頭的題目,在其他編程語言中不使用中間變量交換兩個變量的值可以使用異或運(yùn)算,Python中還可以通過內(nèi)置的字節(jié)碼指令直接交換兩個變量的值。
方法一: a = a ^ b b = a ^ b a = a ^ b
方法二: a, b = b, a 擴(kuò)展:需要注意, a, b = b, a這種做法其實(shí)并不是元組解包,雖然很多人都這樣認(rèn)為。
Python字節(jié)碼指令中有ROT_TWO指令來支持這個操作,類似的還有ROT_THREE,對于3個以上的元素,如 a, b, c, d = b, c, d, a,才會用到創(chuàng)建元組和元組解包。
想知道你的代碼對應(yīng)的字節(jié)碼指令,可以使用Python標(biāo)準(zhǔn)庫中dis模塊的dis函數(shù)來反匯編你的Python代碼。