點(diǎn)評(píng):典型的送人頭的題目,在其他編程語言中不使用中間變量交換兩個(gè)變量的值可以使用異或運(yùn)算,Python中還可以通過內(nèi)置的字節(jié)碼指令直接交換兩個(gè)變量的值。
方法一: 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指令來支持這個(gè)操作,類似的還有ROT_THREE,對(duì)于3個(gè)以上的元素,如 a, b, c, d = b, c, d, a,才會(huì)用到創(chuàng)建元組和元組解包。
想知道你的代碼對(duì)應(yīng)的字節(jié)碼指令,可以使用Python標(biāo)準(zhǔn)庫中dis模塊的dis函數(shù)來反匯編你的Python代碼。