剛開始學習python中的變數用法時:
1,,,在程式中可隨時修改變數的值,而python將始終記錄變數的最新值,
2,,,變數名只能包含字母,數字,和下劃線,可以字母或下劃線打頭,但不能以數字打頭,
3,,,變數不是資料型別,只是記憶體中臨時放置資料的空間名稱,不同于其它記憶體資料,對變數的操作一定要存回變數中去,不然只是暫時操作,最后列印出來的結果還是不會改變,例如name.rstrip()
學到上面卡住了,,,
程式是微觀層面的事物,我們只能借助思維能力對其進行探索,大多數新人學python都會把變數理解為盒子,可是這樣的類比在遇見變數的操作方法時會理解不通,比如對變數操作name.rstrip(),按把變數類比于盒子的理解,變數在進行操作后不需要存回變數中,即程式不需要寫入name=name.rstrip()這一行代碼(和正常的資料結構一樣),但是丟失這一行代碼,最后列印出來的變數結果還是對變數操作之前的結果,這表明對變數的操作只是暫時的,而不是永久的,因為正常的資料結構在操作完之后就是永久保存,無需存入這一行代碼,這就告訴我們,變數并不是盒子,那么變數類比于什么好呢?
python的底層是C語言,變數可以類比于標簽,指標都可以,在給變數賦值時,并不是把值丟入盒子中并把之前的值拿出,而是給新的值開辟出另一塊記憶體空間,變數指向新開的記憶體,在給變數進行操作的時候,只是暫時操作資料拿來給程式運行,指標指的還是這塊記憶體地址,最后列印出來還是原來的變數,這樣也就能說得通,為什么變數在操作完之后要重新賦值給變數,也就是新開一個記憶體地址,指標指向新的,這樣值才能改變,不然最后列印出的結果還是最初的變數,而不是操作完之后的變數,

如上,如果把變數1賦值給變數2,對變數2進行操作,最后得到的結果是2個變數都為【1,2,3】,說明變數是2個指標都指向同一個開辟出來的記憶體空間,而不是分別有自己的記憶體空間,不然就會得出變數1是【1,2】
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/300862.html
標籤:其他
下一篇:02-從四個角度分析時間復雜度
