PyCharm не может разрешить динамические ссылки для многопроцессорного модуля - PullRequest
0 голосов
/ 04 сентября 2018

Это совершенно правильный код:

globals().update({"variable": "val"})
variable
# do-something-with-variable

Однако PyCharm не может распознать переменную:

enter image description here

Я не хочу отключать маркировку неразрешенных ссылок; это очень полезная функция. Я хочу, чтобы PyCharm распознал мою переменную. Как я могу это сделать? (даже если это грязная уловка для разработки, которую я позже сотру в производстве)

Объяснение

Я бы не заботился о globals (). Update, если бы не этот Модуль multiprocessing Python из версии 3.4 включает динамическое создание переменных через контекстный класс вместо определения их в __init__.py file (см. эту ссылку ) По этой причине PyCharm вообще не распознает атрибуты модуля , поэтому мне приходится постоянно искать документы, а не использовать интроспективные функции PyCharm для этого пакета, не говоря уже об ошибке unresolved reference, которая заставляет меня постоянно сомневаться в правильности кода или нет. В основном, как написание кода в блокноте Windows; -)

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

Так как Python является динамическим языком, PyCharm не может проверить, является ли это действительным или нет, используя статический вывод.

Обратите внимание на следующее:

globals = lambda: {}

globals().update({'variable': 'val'})

print(variable) # NameError: name 'variable' is not defined

Теперь, когда вы омрачили globals, этот код больше не является допустимым, и PyCharm не может знать.

Возможность, представленная выше, является недостатком динамических языков: вы не можете знать, действительна ли программа до ее запуска.

0 голосов
/ 05 сентября 2018

Вы можете добавить: # noinspection PyUnresolvedReferences в строке над строкой, в которой необходимо отключить неразрешенную контрольную проверку.

Он не отключит его больше нигде (из того, что я вижу в моем Pycharm 2018.2)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...