Mih*_*ian 49 python ide pycharm
鉴于这种情况:
b.py:
import A
# A is unused here
Run Code Online (Sandbox Code Playgroud)
c.py:
from b import A
# A is used here
Run Code Online (Sandbox Code Playgroud)
PyCharm在b.py中抱怨"import A"是一个未使用的导入,Optimize导入会删除它,打破c.py中的导入
我知道这些链式导入不是一个好习惯(虽然你可以用它来实现一个Facade模块),但是我或者是PyCharm失败了吗?
ben*_*lme 88
您实际上可以使用PyUnresolvedReferences
标记来取消对import语句的检查:
# noinspection PyUnresolvedReferences
import A
Run Code Online (Sandbox Code Playgroud)
Bak*_*riu 16
据我所知,这种行为不作为检查或其他可配置选项处理,这意味着#noinspection UnusedImport
在导入之前没有(或等效的)可以放置.
如果您不想在使用这些变量的地方定义一个未使用的块,那么可以使用另一种简单且可能更好的方法来实现您想要的:
#b.py code
import A
# [...] your code
__all__ = ['A', ...] # *all* the names you want to export
Run Code Online (Sandbox Code Playgroud)
PyCharm非常聪明,可以查看__all__
并避免删除A
未使用的导入.但是,有一个限制__all__
必须是一个简单的列表文字.你做不到这样的事情:
__all__ = ['A'] + [name for name in iterable if condition(name)]
Run Code Online (Sandbox Code Playgroud)
甚至不:
x = 'b'
__all__ = ['A', x]
Run Code Online (Sandbox Code Playgroud)
定义__all__
是使模块*
-import安全的最佳实践,所以你应该已经做了.