您能否将一个 for 循环嵌套在另一个 for 循环中,并且它们具有相同的循环变量?
Can you nest one for loop inside the other with them having the same loop variable?
考虑这段代码:
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
作为我的循环变量。但在 for 循环内,我还调用了 drawSquare()
函数,该函数还包含一个 for 循环和一个名为 i
.
的循环变量
当我 运行 这个程序时,它给出了与我将两个循环变量之一的名称更改为 counter
时相同的输出。这只是巧合还是您可以将一个 for 循环嵌套在另一个 for 循环中,并且它们具有相同的循环变量?
提前致谢。
如果循环不在同一范围内,您可以将它们相互嵌套。由于您在另一个函数中调用内部循环,因此它具有不同的范围。第一个 'i' 在这里不知道,所以你甚至不能访问它并且没有冲突。
您可以找到有关变量和作用域的更多信息here
这里有两点需要理解:
drawSquare()
中的变量i
和main()
中的变量i
是完全独立的变量。他们有相同的名字,但除此之外他们完全没有共同之处。您可以在程序中拥有一千个名为 i
的变量,只要它们都是不同函数的本地变量,它们就不会相互作用。
第二个更微妙的问题是,如果您在单个函数中嵌套两个具有相同控制变量的 for
循环,会发生什么情况。
for i in range(10):
for i in range(20):
print(i)
在这种情况下,只有一个 i
变量,但这并不重要。内层循环重新分配用于外层循环的变量值,但您可以在 Python 中重新分配循环变量,这对循环没有影响。正如您所期望的那样,您将在这里打印 10 次数字 0..19。
Python 中的 for
循环遍历一个序列(或任何可迭代的)。它会将循环变量依次设置为可迭代对象的每个元素,但循环控制从不使用该变量的当前值,而是在内部保留所有控制信息。这意味着您不能只分配循环变量并期望它像在某些其他语言中那样影响迭代。
两个变量在不同的范围内,所以不会有任何冲突。一个 i 变量在 main 函数的局部范围内,而另一个在 drawSquare 函数的局部范围内。
考虑这段代码:
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
作为我的循环变量。但在 for 循环内,我还调用了 drawSquare()
函数,该函数还包含一个 for 循环和一个名为 i
.
当我 运行 这个程序时,它给出了与我将两个循环变量之一的名称更改为 counter
时相同的输出。这只是巧合还是您可以将一个 for 循环嵌套在另一个 for 循环中,并且它们具有相同的循环变量?
提前致谢。
如果循环不在同一范围内,您可以将它们相互嵌套。由于您在另一个函数中调用内部循环,因此它具有不同的范围。第一个 'i' 在这里不知道,所以你甚至不能访问它并且没有冲突。
您可以找到有关变量和作用域的更多信息here
这里有两点需要理解:
drawSquare()
中的变量i
和main()
中的变量i
是完全独立的变量。他们有相同的名字,但除此之外他们完全没有共同之处。您可以在程序中拥有一千个名为 i
的变量,只要它们都是不同函数的本地变量,它们就不会相互作用。
第二个更微妙的问题是,如果您在单个函数中嵌套两个具有相同控制变量的 for
循环,会发生什么情况。
for i in range(10):
for i in range(20):
print(i)
在这种情况下,只有一个 i
变量,但这并不重要。内层循环重新分配用于外层循环的变量值,但您可以在 Python 中重新分配循环变量,这对循环没有影响。正如您所期望的那样,您将在这里打印 10 次数字 0..19。
Python 中的 for
循环遍历一个序列(或任何可迭代的)。它会将循环变量依次设置为可迭代对象的每个元素,但循环控制从不使用该变量的当前值,而是在内部保留所有控制信息。这意味着您不能只分配循环变量并期望它像在某些其他语言中那样影响迭代。
两个变量在不同的范围内,所以不会有任何冲突。一个 i 变量在 main 函数的局部范围内,而另一个在 drawSquare 函数的局部范围内。