有没有一种方法可以缩短代码,从而不必编写“ turtle”。每次我使用turtle模块中的功能时?

时间:2019-04-19 19:42:36

标签: python turtle-graphics

我正在尝试在Python中使用turtle来绘制正方形,每次我想命令它做某事时,我都必须写turtle

import turtle


turtle.forward(100)
turtle.right(90)
turtle.forward(100)
turtle.right(90)
turtle.forward(100)
turtle.right(90)
turtle.forward(100)
turtle.right(90)
turtle.back(100)
turtle.right(90)
turtle.forward(100)
turtle.right(90)
turtle.back(100)
turtle.right(90)
turtle.forward(100)
turtle.right(90)
turtle.back(200)
turtle.right(90)
turtle.forward(100)
turtle.right(90)
turtle.back(100)



turtle.exitonclick()

我希望编写代码而不必每次都写turtle

4 个答案:

答案 0 :(得分:8)

您可以通过编写操作从turtle模块导入所有内容

from turtle import *  # this is a wildcard import

但是,相反,您应该只import turtle as t(或任何其他想要的东西),像这样:

import turtle as t  # you can replace t with any valid variable name

由于通配符导入会造成函数定义冲突

相反,您可以仅从模块中导入所需的类(或方法)。 Turtle是必需的导入:

from turtle import Turtle

现在,我们必须实例化它:

t = Turtle()

现在我们可以使用它:

t.do_something()  # methods that act on the turtle, like forward and backward

但是,这不会导入Screen模块,因此除非您也导入exitonclick(),否则您将无法使用Screen

from turtle import Turtle, Screen
s = Screen()
s.exitonclick()

不过,正如@cdlane所指出的那样,循环实际上可能是减少必须编写的代码量的最佳选择。这段代码:

for _ in range(x):
    turtle.forward(100)
    turtle.right(90)

向前移动turtle,然后向右移动x次。

答案 1 :(得分:4)

您可以使用通配符导入:

from turtle import * 

但是最好使用前缀导入来保持名称空间整洁。参见@alec_a's answer

答案 2 :(得分:4)

您是否知道有多少评论对“ from turtle import *”的回应是“不要使用通配符导入”,就像人们建议的那样?我将进一步争论,不要做import turtle as t,因为它会向龟暴露 functional 接口。 turtle模块是面向对象的,您只需要公开该接口即可。如果您厌倦了太多的输入,请了解循环:

from turtle import Screen, Turtle

t = Turtle()

for _ in range(4):
    t.forward(100)
    t.right(90)

for _ in range(4):
    t.backward(100)
    t.left(90)

t.backward(100)

for _ in range(3):
    t.backward(100)
    t.left(90)

s = Screen()

s.exitonclick()

诚然,我不介意为简短的Turtle&Tkinter示例以及Zelle图形程序导入通配符。但是,这些fd()都是废话,而不是forward()!庆祝成为乌龟,不要躲在壳里!

答案 3 :(得分:2)

免责声明:此答案适用于像我这样的懒人:)

已经有很好的答案,向您展示如何解决问题,并警告您有关通配符导入。

如果您只想使用乌龟模块,可以使自己的生活变得轻松,例如,最好不要只写turtle.forward(90),而要写forward(90),但是如果只写{ {1}}

再次会影响您代码的可读性,但通常需要试用

现在您的代码看起来像

编辑:按照 @chepner 的建议在一行中将导入内容修改为超级懒人

f(90)