未解析的引用“turtle”

Unresolved reference 'turtle'

提问人:user101 提问时间:11/16/2023 最后编辑:ggorlenuser101 更新时间:11/18/2023 访问量:55

问:

我试图使用以下代码从 turtle 导入 Turtle 和 Screen:

from turtle import Turtle, Screen


nora = turtle.Turtle()
screen = turtle.Screen()

但是编辑器(pycharm)显示-->

“未解析的引用''”

并建议使用“import turtle”来导入整个模块。

请帮忙。

enter image description here

这是编辑器的问题吗?

python 导入 参考 turtle-graphics python-turtle

评论

2赞 ewokx 11/16/2023
你已经导入了,所以你只需要这样做,据我所知。Turtlenora = Turtle()

答:

3赞 ggorlen 11/16/2023 #1

不,这不是编辑器的问题。当您使用 时,这不会将模块作为一个整体导入,而只会从模块内部导入类。from turtle import TurtleturtleTurtleturtle

因此,您可以执行以下两项操作之一:

  1. 导入模块并访问它:Turtle

    import turtle
    
    mora = turtle.Turtle()
    screen = turtle.Screen()
    
  2. 导入类并在使用时删除模块命名空间:Turtleturtle.

    from turtle import Screen, Turtle
    
    mora = Turtle()
    screen = Screen()
    

方法 2 是首选导入,因为该模块添加了 100+ 个函数,这些函数表示模块代表您管理的单例 turtle。此单例 turtle 可能会导致与您的实例 turtle(使用 创建的对象)混淆。如果始终仅导入类,则保证不会与附加到模块的功能单例接口发生任何混淆。turtle.Turtle()Turtleturtle

甚至可以跳过导入并通过 turtle 实例访问它:.Screenscreen = mora.screen

最危险的导入是 ,有时建议初学者使用,因为它减少了打字。但我从不使用它;它弊大于利,因为不仅会出现上述函数接口和实例接口之间混淆的可能性,而且变量和 120+ Turtle 函数之间也可能发生名称冲突,从而污染全局命名空间,从而导致数小时的可避免调试。from turtle import *