考虑这段代码:
%cd%
在最后一个for循环中,我使用import turtle
import sys
# function that draws a square using turtle graphics:
def drawSquare(t, sz): # t is a turtle object and sz is the size of the square
for i in range(4):
t.forward(sz)
t.left(90)
def main():
sys.setExecutionLimit(300000)
wn = turtle.Screen() # setting up the window
wn.bgcolor('lightgreen')
alex = turtle.Turtle() # setting up the turtle object
alex.color('blue')
alex.speed(10)
for i in range(24): # drawing the shape
drawSquare(alex, 100)
alex.right(15)
wn.exitonclick()
main()
作为循环变量。但是在for循环中我还调用了i
函数,该函数还包含一个带有名为drawSquare()
的循环变量的for循环。
当我运行这个程序时,它会提供与更改两个循环变量之一时相同的输出。例如,i
的名称。它只是一个巧合,或者你可以将一个for循环嵌入另一个循环变量中吗?
提前致谢。
答案 0 :(得分:1)
这里有几点需要理解:
i
中的变量drawSquare()
和i
中的变量main()
是完全独立的变量。它们具有相同的名称,但除此之外它们彼此完全没有任何共同之处。你的程序中可以有一千个名为i
的变量,只要它们都是不同功能的本地变量,它们就不会互动。
第二个更微妙的问题是如果在单个函数中嵌套两个具有相同控制变量的for
循环会发生什么。
for i in range(10):
for i in range(20):
print(i)
在这种情况下,只有一个i
变量,但这并不重要。内部循环重新分配用于外部循环的变量的值,但是允许您在Python中重新分配循环变量,它对循环没有影响。在这里,你将得到的数字0..19打印出10次,就像你期望的那样。
Python中的for
循环遍历序列(或任何可迭代的)。它将循环变量依次设置为iterable的每个元素,但循环控制从不使用该变量的当前值,而是在内部保留所有控制信息。这意味着你不能只分配循环变量,并希望它能像其他语言一样影响迭代。
答案 1 :(得分:0)
如果它们不在同一范围内,您可以将循环嵌套在一起。由于您在另一个函数中调用内部循环,因此它具有不同的范围。第一个' i'这里不知道,所以你甚至无法访问它,也没有冲突。
您可以在变量和范围here
上找到更多信息答案 2 :(得分:0)
两个变量都在不同的范围内,因此不会发生任何冲突。一个i变量位于main函数的局部范围内,而另一个变量位于drawSquare函数的局部范围内。