關於Python鏈式賦值的賦值順序問題


《第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

請大家多多支持,點贊、評論和加關注!謝謝!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM