Ложная синтаксическая ошибка PyCharm с использованием черепахи

Код ниже работает отлично, однако PyCharm жалуется на синтаксическую ошибку в forward(100)

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

forward(100)

done()

Поскольку turtle является стандартной библиотекой, я не думаю, что мне нужно делать дополнительную настройку, я прав?

введите здесь описание изображения


person macabeus    schedule 31.08.2014    source источник


Ответы (2)


Функция forward() доступна для импорта, если указать __all__< /a> в модуле turtle, соответствующая часть из исходный код:

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

В настоящее время pycharm не может видеть объекты, перечисленные в списке __all__ модуля, и поэтому помечает их как unresolved reference. В багтрекере есть открытая проблема:

Создать функцию из метода: обновить __all__, если он существует, для использования помеченного импорта

См. также: Может ли кто-нибудь объяснить __all__ в Python?


К вашему сведению, вы можете добавить комментарий noinspection, чтобы указать Pycharm не помечать его как неразрешенную ссылку:

from turtle import *

#noinspection PyUnresolvedReferences
forward(100)

done()

Или отключить проверку для определенной области.


И, конечно же, строго говоря, вы должны следовать PEP8 и избегайте импорта подстановочных знаков:

import turtle

turtle.forward(100)
turtle.done()
person alecxe    schedule 31.08.2014

Другим решением было бы явное создание объекта Turtle. Тогда автозаполнение работает так, как должно, и все немного более явно.

import turtle

t = turtle.Turtle()

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

turtle.done()

or

from turtle import Turtle

t = Turtle()
person lw1.at    schedule 10.09.2019