Так как Python является динамическим языком, PyCharm не может проверить, является ли это действительным или нет, используя статический вывод.
Обратите внимание на следующее:
globals = lambda: {}
globals().update({'variable': 'val'})
print(variable) # NameError: name 'variable' is not defined
Теперь, когда вы омрачили globals
, этот код больше не является допустимым, и PyCharm не может знать.
Возможность, представленная выше, является недостатком динамических языков: вы не можете знать, действительна ли программа до ее запуска.