PyCharm 使用 turtle 时虚假的语法错误

4 投票
2 回答
4061 浏览
提问于 2025-04-19 01:10

下面的代码运行得很好,不过,PyCharm却在forward(100)这一行报了语法错误。

#!/usr/bin/python
from turtle import *

forward(100)

done()

因为turtle是一个标准库,我觉得我不需要做额外的配置,对吧?

enter image description here

2 个回答

1

另一种解决办法是明确地创建一个 Turtle 对象。这样,自动补全功能就能正常工作,而且一切都更加清晰明了。

import turtle

t = turtle.Turtle()

t.left(100)
t.forward(100)

turtle.done()

或者

from turtle import Turtle

t = Turtle()
12

forward()这个函数可以通过在模块中指定__all__来导入,相关的代码可以在源代码中找到:

_tg_turtle_functions = [..., 'forward', ...]
__all__ = (_tg_classes + _tg_screen_functions + _tg_turtle_functions +
           _tg_utilities + _math_functions)

目前,pycharm看不到在模块的__all__列表中列出的对象,因此会把它们标记为未解决的引用。在它的bug追踪系统中有一个开放的问题:

将方法转换为函数:如果存在,更新__all__以便使用星号导入

另外,你可以查看:有人能解释一下Python中的__all__吗?


顺便说一下,你可以添加noinspection注释来告诉Pycharm不要把它标记为未解决的引用:

from turtle import *

#noinspection PyUnresolvedReferences
forward(100)

done()

或者,禁用特定范围内的检查


当然,严格来说,你应该遵循PEP8的规范,并且避免使用通配符导入

import turtle

turtle.forward(100)
turtle.done()

撰写回答