Python代码:为什么变量在Python中比C中活的更长(有更大的范围)?
for i in xrange(10):
for j in xrange(5):
pass
# The for-loop ends, but i,j still live on
print i,j # 9, 4
C代码:
for(int i=0; i<=10; i++)
for(int =0; j<=5; j++)
;
// The for-loop ends, so i,j can't be accessed, right?
printf("%d, %d", i, j); // won't compile
因此,在Python变量将连for
循环结束后生活呢?
我认为你的代码不是等价的。我对Python并不熟悉,但是如果'i'是在python中已经声明的,而不是在'for'之外,而在C中,'i'是for循环的本地。 – Ankit 2012-04-16 01:00:10
等效的C代码应该在for循环(int i,j;)之外声明i和j,然后将它们简单地分配给for循环。 – Joe 2012-04-16 01:02:12
@Joe我认为你的意思是_could_,而不是_should_。关键是在Python中,你不能声明一个局部于循环范围的变量。 – agf 2012-04-16 01:02:56