如何移动在 Python 的不同函数中创建的海龟?

How can I move turtles created in a different function in Python?

我对使用 python 和一般编码还很陌生,但过去几天我一直在使用 turtle。我正在尝试创建几个函数,其中其他函数移动在不同函数中创建的海龟。例如:

import turtle as t

def setUp():
    t.setup(900,600)
    t.colormode(255)
    win = t.Screen()

def turtles():
    t1 = t.Turtle()
    t1.shapesize(1.5,1.5,0)
    t1.color('red')
    t1.pensize(3)
    t1.shape('turtle')

def moveTurtle():
    t1.forward(50)

setUp()
turtles()
moveTurtle()

在我这里的示例中,当 python 下降到 moveTurtles() 时,t1 未被识别,因为它是在之前的函数中创建的。如果有人可以让我了解如何去做这件事,我将非常感激。谢谢!

您有 2 个选择:

选项 1:

return 来自第一种方法的变量并将其发送到第二种方法:

import turtle as t

def setUp():
    t.setup(900,600)
    t.colormode(255)
    win = t.Screen()

def turtles():
    t1 = t.Turtle()
    t1.shapesize(1.5,1.5,0)
    t1.color('red')
    t1.pensize(3)
    t1.shape('turtle')
    return t1

def moveTurtle(t1):
    t1.forward(50)

setUp()
moveTurtle(turtles())

选项 2:

使用不推荐但可用的全局变量:

import turtle as t

t1 = None

def setUp():
    t.setup(900,600)
    t.colormode(255)
    win = t.Screen()

def turtles():
    global t1
    t1 = t.Turtle()
    t1.shapesize(1.5,1.5,0)
    t1.color('red')
    t1.pensize(3)
    t1.shape('turtle')

def moveTurtle():
    t1.forward(50)

setUp()
turtles()
moveTurtle()

选项 3:

海龟和屏幕对象是海龟包设计的全局实体。 (当函数 returns 时,函数本地的 turtle 不会被回收。)只需将它们设为全局,然后全局访问它们或将它们传递到需要它们的地方:

from turtle import Screen, Turtle

def setUp(w):
    w.setup(900, 600)
    w.colormode(255)

def turtles(t):
    t.shapesize(1.5, 1.5, 0)
    t.color('red')
    t.pensize(3)
    t.shape('turtle')

def moveTurtle(t):
    t.forward(50)

win = Screen()
t1 = Turtle()

setUp(win)
turtles(t1)
moveTurtle(t1)