2016-05-17 43 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