Python for迴圈小問題

2021-07-24 20:57:15 字數 1019 閱讀 1304

最近翻以前的**的時候發現了乙個問題 ,先看一下下面**

def test():

for i in xrange(2):

print 'before', i

for i in xrange(2, 4):print 'middle', i

print 'after', i

看到**之後,發現內層for迴圈變數和外層的迴圈的名字一致,這樣的**在執行之後外層迴圈能執行幾次呢?

執行結果

before 0

middle 2

middle 3

after 3

before 1

middle 2

middle 3

after 3

可以看到,外層迴圈也按照正常次數執行,內層的變數 i 沒有影響到外城的執行,雖然在內層執行之後 i 值發生了改變。

仔細想了一下,大致明白了其中的原委。

python不像c++,在c++,中宣告乙個變數需要帶上型別,宣告之後這個變數已經指向了位址空間,二python不需要這樣,python中的變數只是個符號,賦值只是把變數和記憶體位址儲存的物件關聯起來。

上面**中的執行流程可以看成這樣

1 第一次執行 把 0 的位址和 i 關聯起來 

2 執行內部迴圈 不斷變換 i 關聯的位址

3 執行第二次外部迴圈 把 1 和 i 關聯起來

那麼同樣的** 在 c中會是什麼輸出呢

**如下

#include int main()

printf("after %d\n", i);

}return 0;

}

輸出如下 

before 0

middle 2

middle 3

after 4

通過比較,發現python還是真的與眾不同。

迴圈小問題

if 0 編寫乙個將輸入貼上到輸出,並且將其中多個空格變為乙個,退格符顯示為 b,換行符顯示為 n,製表符顯示為對應轉義字元。endif 0 include include include using namespace std intmain scanf eof in len strlen in ...

pythonfor迴圈教程 for迴圈

for迴圈 它能夠迭代任何序列的項,例如列表或字串。語法 syntax for iterating var in sequence statements s 如果序列包含表示式列表,則首先對其進行求值。然後,將序列中的第一項分配給迭代變數iterating var 接下來,執行語句塊。列表中的每個專...

Python for 迴圈語句

python for迴圈可以遍歷任何序列的專案,如乙個列表或者乙個字串。語法 for迴圈的語法格式如下 for iterating var insequence statements s 流程圖 例項 usr bin python coding utf 8 forletterin python 第乙...