#演示for回圈的基本使用
foods = ["ps披薩","nrm牛肉面","sgmx砂鍋米線","hg火鍋","kr烤肉"]
for food in foods:#for回圈陳述句,注意不要丟失冒號
print(food)#回圈內陳述句,注意縮進格式.
print("\r\n"+food+"\r\n")#變數food出了回圈還能使用?不是區域變數么?作用域范圍?
foods.sort(reverse = True)
for food in foods:#這里的food變數是上一個回圈定義的么?還是在這個回圈新定義的?
print("我喜歡的食物有:"+food.title())
print("期待下次能夠吃到我喜愛的"+food.upper())
print("\r\n這些都是我鐘愛的美食.")
print("而我最喜歡的食物是:"+food)#food變數的作用范圍機制貌似與java的機制不同?
Java轉學Python.初學,代碼是這樣的.
我的困惑是:
1.Python中for回圈內定義的變數food,它為什么在回圈結束之后仍能夠使用?Python中代碼塊的內部變數,它的作用域范圍機制是怎么樣的?
2.代碼中第二個回圈中的food變數是之前第一個回圈中已經創建了的呢,還是在第二個回圈中新創建的?
3.整個代碼中從第一個回圈到第二個回圈,food變數在記憶體中的變化狀態是怎樣的?它的地址指標是如何指向物體的?
其實這三個問題,基本上是一個大問題,就是關于Python區域變數的機制,這跟Java貌似有很大的不同.求大神幫助我解決困惑.感恩!謝謝!
PS:各位親愛滴妹紙們,媽媽們,姐姐們~祝愿大家女神節喜樂蒙恩~
uj5u.com熱心網友回復:
以我目前碰到的代碼來說,在python中,你的上一次回圈的food只要沒有被重新定義,那么他的值就不會變后面的food將前面的food進行了覆寫
希望對你有幫助,你可以多測驗幾下
uj5u.com熱心網友回復:
1,兩個回圈的foot 不是同一個的,你換個英文都可以2,應該這么想,第二次用foot 相當于重新定義了一個變數記憶體地址是不同的
uj5u.com熱心網友回復:
python 為順序型執行,只要不清除,變數就會在地址里,可以用 id(變數)查看地址,你可以print(id(food))看看地址是否變化,就知道變與不變,什么時候變了
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/80785.html
