2016-05-17 92 views
-3

爲什麼用這兩個不同的代碼(只有縮進不同)我能得到兩個不同的結果嗎?Python中的非常基本的縮進

爲什麼在第一個代碼的情況下,代碼不會比列表中的第二個項目執行更多?

n = [3, 5, 7] 
def double_list(x): 
    for i in range(0, len(x)): 
     x[i] = x[i] * 2 
     return x 

print double_list(n) 
// [6, 5, 7] None 

n = [3, 5, 7] 
def double_list(x): 
    for i in range(0, len(x)): 
     x[i] = x[i] * 2 
    return x 

print double_list(n) 
// [6, 10, 14] None 
+10

因爲縮進(着名!)在Python中具有語法意義? – jonrsharpe

+0

縮進是Python語法的一部分。如果你用類似C的語言繞過花括號,你會期望同樣的輸出出現嗎? –

+0

你使用的教學材料是否真的不能解釋縮進在Python中有多重要? – TigerhawkT3

回答

3

由於縮進,在第一個示例中,您在第一次迭代循環後返回x。在第二個示例中,循環遍歷整個列表後,您將返回x。

+0

明白了,謝謝! – Smolo

1

如前所述,縮進是Python中着名的重要部分。它具有與其他語言中的大括號{}類似的功能,並指示某些代碼塊在哪裏開始和結束。你的情況:

n = [3, 5, 7] 
def double_list(x): 
    for i in range(0, len(x)): 
     x[i] = x[i] * 2 
     return x 

returnfor環這裏,和:

n = [3, 5, 7] 
def double_list(x): 
    for i in range(0, len(x)): 
     x[i] = x[i] * 2 
    return x 

for循環這裏。

每當您將代碼縮進一個空間(無論是製表符還是常量空格),Python都會考慮這種嵌套。也就是說,第一種情況是嵌套在for循環中的return語句,所以函數在循環的第一次迭代中返回,而第二種情況return語句是而不是嵌套,因此將按照您的預期返回。

+0

明白了,謝謝! – Smolo

1

在Python中,縮進總是相關的。正因爲如此,在你的第一個代碼示例中,你實際上是在的for循環中返回。所以循環只執行一次,然後調用return,退出函數。

+0

明白了,謝謝! – Smolo