PyCharm 使用 turtle 时虚假的语法错误
下面的代码运行得很好,不过,PyCharm却在forward(100)
这一行报了语法错误。
#!/usr/bin/python
from turtle import *
forward(100)
done()
因为turtle
是一个标准库,我觉得我不需要做额外的配置,对吧?
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()