pythons代码执行顺序如何工作?
How does pythons code execution order work?
我定义了一个函数,其中我希望在 for 循环之前有几行代码 运行 但是,for 语句上方代码的 none 运行 for一些理由?但是,如果我注释掉 for 循环,那么代码 运行 就完全没问题了。我以为代码会按顺序往下执行,但它似乎跳到了 for 循环。我认为这可能与我的缩进有关,无论哪种方式,我们都将不胜感激。谢谢:)
def process_moves(replace_me):
#why is this code not run I want it to run this code AND THEN RUN THE FOR STATEMENT.
turtle.setpos(-300,300)
turtle.write('TEST TEXT', align='left', font=20)
#Draw text in corners for each flag
turtle.setpos(positions[0][:2])
turtle.write('A', align='left', font=20)
turtle.setpos(positions[1][:2])
turtle.write('B', align='center', font=20)
turtle.setpos(positions[2][:2])
turtle.write('C', align='center', font=20)
turtle.setpos(positions[3][:2])
turtle.write('D', align='center', font=20)
screen = Screen()
turtle = Turtle()
for competitor, direction in random_moves():
if competitor == 'Competitor A':
turtle.penup()
if direction == 'Left':
if positions[0][2] != 'A':
positions[0][0] -= HORIZONTAL
positions[0][2] = chr(ord(positions[0][2]) - 1)
elif direction == 'Right':
if positions[0][2] != 'G':
positions[0][0] += HORIZONTAL
positions[0][2] = chr(ord(positions[0][2]) + 1)
def
关键字定义了一个python函数,函数中的代码不是运行直到你调用该函数。在您的示例中,我根本不相信 def
是必需的。
screen = Screen()
turtle = Turtle()
turtle.setpos(-300,300)
turtle.write('TEST TEXT', align='left', font=20)
turtle.setpos(positions[0][:2])
turtle.write('A', align='left', font=20)
turtle.setpos(positions[1][:2])
turtle.write('B', align='center', font=20)
turtle.setpos(positions[2][:2])
turtle.write('C', align='center', font=20)
turtle.setpos(positions[3][:2])
turtle.write('D', align='center', font=20)
for competitor, direction in random_moves():
if competitor == 'Competitor A':
turtle.penup()
if direction == 'Left':
if positions[0][2] != 'A':
positions[0][0] -= HORIZONTAL
positions[0][2] = chr(ord(positions[0][2]) - 1)
elif direction == 'Right':
if positions[0][2] != 'G':
positions[0][0] += HORIZONTAL
positions[0][2] = chr(ord(positions[0][2]) + 1)
但是,如果您确实希望使用该功能,正确的代码如下:
def process_moves():
global turtle
turtle.setpos(-300,300)
turtle.write('TEST TEXT', align='left', font=20)
turtle.setpos(positions[0][:2])
turtle.write('A', align='left', font=20)
turtle.setpos(positions[1][:2])
turtle.write('B', align='center', font=20)
turtle.setpos(positions[2][:2])
turtle.write('C', align='center', font=20)
turtle.setpos(positions[3][:2])
turtle.write('D', align='center', font=20)
screen = Screen()
turtle = Turtle()
process_moves()
for competitor, direction in random_moves():
if competitor == 'Competitor A':
turtle.penup()
if direction == 'Left':
if positions[0][2] != 'A':
positions[0][0] -= HORIZONTAL
positions[0][2] = chr(ord(positions[0][2]) - 1)
elif direction == 'Right':
if positions[0][2] != 'G':
positions[0][0] += HORIZONTAL
positions[0][2] = chr(ord(positions[0][2]) + 1)
两个示例应该具有相同的输出,创建函数的主要优点是可重用性。如果您不打算多次使用函数代码,则创建函数没有意义。
我定义了一个函数,其中我希望在 for 循环之前有几行代码 运行 但是,for 语句上方代码的 none 运行 for一些理由?但是,如果我注释掉 for 循环,那么代码 运行 就完全没问题了。我以为代码会按顺序往下执行,但它似乎跳到了 for 循环。我认为这可能与我的缩进有关,无论哪种方式,我们都将不胜感激。谢谢:)
def process_moves(replace_me):
#why is this code not run I want it to run this code AND THEN RUN THE FOR STATEMENT.
turtle.setpos(-300,300)
turtle.write('TEST TEXT', align='left', font=20)
#Draw text in corners for each flag
turtle.setpos(positions[0][:2])
turtle.write('A', align='left', font=20)
turtle.setpos(positions[1][:2])
turtle.write('B', align='center', font=20)
turtle.setpos(positions[2][:2])
turtle.write('C', align='center', font=20)
turtle.setpos(positions[3][:2])
turtle.write('D', align='center', font=20)
screen = Screen()
turtle = Turtle()
for competitor, direction in random_moves():
if competitor == 'Competitor A':
turtle.penup()
if direction == 'Left':
if positions[0][2] != 'A':
positions[0][0] -= HORIZONTAL
positions[0][2] = chr(ord(positions[0][2]) - 1)
elif direction == 'Right':
if positions[0][2] != 'G':
positions[0][0] += HORIZONTAL
positions[0][2] = chr(ord(positions[0][2]) + 1)
def
关键字定义了一个python函数,函数中的代码不是运行直到你调用该函数。在您的示例中,我根本不相信 def
是必需的。
screen = Screen()
turtle = Turtle()
turtle.setpos(-300,300)
turtle.write('TEST TEXT', align='left', font=20)
turtle.setpos(positions[0][:2])
turtle.write('A', align='left', font=20)
turtle.setpos(positions[1][:2])
turtle.write('B', align='center', font=20)
turtle.setpos(positions[2][:2])
turtle.write('C', align='center', font=20)
turtle.setpos(positions[3][:2])
turtle.write('D', align='center', font=20)
for competitor, direction in random_moves():
if competitor == 'Competitor A':
turtle.penup()
if direction == 'Left':
if positions[0][2] != 'A':
positions[0][0] -= HORIZONTAL
positions[0][2] = chr(ord(positions[0][2]) - 1)
elif direction == 'Right':
if positions[0][2] != 'G':
positions[0][0] += HORIZONTAL
positions[0][2] = chr(ord(positions[0][2]) + 1)
但是,如果您确实希望使用该功能,正确的代码如下:
def process_moves():
global turtle
turtle.setpos(-300,300)
turtle.write('TEST TEXT', align='left', font=20)
turtle.setpos(positions[0][:2])
turtle.write('A', align='left', font=20)
turtle.setpos(positions[1][:2])
turtle.write('B', align='center', font=20)
turtle.setpos(positions[2][:2])
turtle.write('C', align='center', font=20)
turtle.setpos(positions[3][:2])
turtle.write('D', align='center', font=20)
screen = Screen()
turtle = Turtle()
process_moves()
for competitor, direction in random_moves():
if competitor == 'Competitor A':
turtle.penup()
if direction == 'Left':
if positions[0][2] != 'A':
positions[0][0] -= HORIZONTAL
positions[0][2] = chr(ord(positions[0][2]) - 1)
elif direction == 'Right':
if positions[0][2] != 'G':
positions[0][0] += HORIZONTAL
positions[0][2] = chr(ord(positions[0][2]) + 1)
两个示例应该具有相同的输出,创建函数的主要优点是可重用性。如果您不打算多次使用函数代码,则创建函数没有意义。