在《第4.7節 Python特色的序列解包、鏈式賦值、鏈式比較》一文中,老猿這樣介紹的:
鏈式賦值是用一行語句將多個變量賦值為同一個值,語法如下:
變量1=變量2=變量n=賦值表達式
該語法實際執行效果類似於:
變量n=賦值表達式
變量2=變量n
變量1=變量2
有CSDN的博友Johnny592友情指出老猿這種解釋錯了,正確的應該是“ a=b=c=1 順序是:a=1,b=a,c=a,有順序”,老猿仔細驗證了一下,證明Johnny592說得是正確的,證明過程如下:
>>> k,l=0,[10,20,30,40]
>>> k=l[k]=3
>>> l #下面的結果顯示l[3]=3,說明k先被賦值為3,才有l[3]賦值為3
[10, 20, 30, 3]
>>>
>>>> k,l=0,[10,20,30,40]
>>> k=l[k]=l[l[k]-1]=3
>>> l #跟上面結果對比表明:l[k]-1=2,說明l[k]比l[l[k]-1]先執行賦值
[10, 20, 3, 3]
>>>
從上述案例執行結果可以看出,l[k]中的k是3,因此是k先賦值為3,再執行的l[k]的賦值。也就是說鏈式賦值是從左到右的順序執行賦值的。
再次感謝Johnny592博友!!
老猿Python,跟老猿學Python!
博客地址:https://blog.csdn.net/LaoYuanPython
請大家多多支持,點贊、評論和加關注!謝謝!