我刚开始使用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
无法识别,因为它是在先前的函数中创建的。如果有人可以给我一些我该如何做的见解,我将非常感激。谢谢!
答案 0 :(得分:0)
您有2个选择:
选项1:
从第一种方法返回变量并将其发送给第二种方法:
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()
答案 1 :(得分:0)
选项3:
根据turtle软件包的设计,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)