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)

两个示例应该具有相同的输出,创建函数的主要优点是可重用性。如果您不打算多次使用函数代码,则创建函数没有意义。