繁体   English   中英

python中的Turtle模块没有导入

[英]Turtle Module in python not importing

这是我第一次在python中使用turtle模块,但我似乎无法导入它?
这是我的代码:

from turtle import *

pen1 = Pen()
pen2 = Pen()

pen1.screen.bgcolour("#2928A7") 

这是我得到的错误:

Traceback (most recent call last):
  File "C:\Python34\Python saves\turtle.py", line 2, in <module>
    from turtle import *
  File "C:\Python34\Python saves\turtle.py", line 5, in <module>
    pen1 = Pen()
NameError: name 'Pen' is not defined

谁能告诉我我做错了什么?

问题是你已经将你的程序命名为“turtle.py”。

所以当Python看到这个陈述时
from turtle import *
它找到的第一个名为turtle匹配模块是你的程序“turtle.py”。

换句话说,您的程序基本上是导入自己而不是乌龟图形模块。


这里有一些代码来演示这个问题。

turtle.py

#! /usr/bin/env python

''' Mock Turtle

    Demonstrate what happens when you give your program the same name
    as a module you want to import.

    See http://stackoverflow.com/q/32180949/4014959

    Written by PM 2Ring 2015.08.24
'''

import turtle

foo = 42
print(turtle.foo)
help(turtle)

我想我应该展示代码实际打印的内容......

当以turtle.py运行时,它会打印以下“帮助”信息:

Help on module turtle:

NAME
    turtle - Mock Turtle

FILE
    /mnt/sda4/PM2Ring/Documents/python/turtle.py

DESCRIPTION
    Demonstrate what happens when you give your program the same name
    as a module you want to import.

    See http://stackoverflow.com/q/32180949/4014959

    Written by PM 2Ring 2015.08.24

DATA
    foo = 42

(END) 

当您点击Q退出帮助时,会再次显示帮助信息。 当你第二次点击Q时,那么

42

42

打印出来。

为什么“帮助”消息和42打印两次? 这是因为turtle.py所有代码都是在导入时执行的,然后在import语句遇到它时再次执行。 请注意,Python不会尝试导入已导入的模块(除非明确告知reload )。 如果没有的Python重新导入,那么上面的代码会陷入进口的无限循环。


当以mockturtle.py运行时,它会打印:

Traceback (most recent call last):
  File "./mock_turtle.py", line 16, in <module>
    print(turtle.foo)
AttributeError: 'module' object has no attribute 'foo'

当然那是因为标准的turtle模块实际上没有foo属性。

我认为解决方案是输入:

pen1 = turtle.Pen()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM