这是完全有效的代码:
globals().update({"variable": "val"})
variable
# do-something-with-variable
但是,PyCharm无法识别该变量:
我不想禁用未解析引用的标记;这是一个非常有用的功能。我希望PyCharm能够识别我的变量。我怎样才能做到这一点? (即使这是一个肮脏的开发技巧,以后我也会在生产中删除它)
如果不是针对那个版本的 Python的multiprocessing
模块(版本3.4)通过上下文类动态创建变量,而不是在其中定义它们,我将不在乎globals()。update。 __init__.py
文件(请参阅this link)由于这个原因,PyCharm 根本无法识别模块的属性,因此我必须不断查找文档,而不要使用PyCharm对此软件包的内省功能,更不用说没有遇到unresolved reference
错误了,这使我不断怀疑自己是否正确编写了代码。基本上就像在Windows的记事本中编写代码;-)
答案 0 :(得分:3)
由于Python是一种动态语言,因此PyCharm无法使用静态推断来检查它是否有效。
请考虑以下内容:
globals = lambda: {}
globals().update({'variable': 'val'})
print(variable) # NameError: name 'variable' is not defined
现在您已经给globals
蒙上了一层阴影,这不再是有效的代码,PyCharm无法知道。
以上可能是动态语言的缺点:在运行程序之前,您不知道程序是否有效。
答案 1 :(得分:2)
您可以在希望禁用未解决的参考检查的行上方的行中添加:# noinspection PyUnresolvedReferences
。
它不会在其他任何地方禁用它(根据我在Pycharm 2018.2中看到的内容)