【发布时间】:2012-08-14 16:51:08
【问题描述】:
所以我正在使用 Python 开发一个项目,并试图通过 pylint 和一般 .所以,我有一个源文件,(我们就叫它a.py)
#a.py
import loggingsetup
def foo():
log.info("This is a log message")
但是,我想控制日志的样子,所以在 loggingsetup 我有类似的东西:
#loggingsetup.py
import logging
logging.root.setLevel(logging.DEBUG)
consoleOut = logging.StreamHandler()
consoleOut.setLevel(logging.INFO)
consoleOut.setFormatter(logging.Formatter("\t"+logging.BASIC_FORMAT))
logging.root.addHandler(consoleOut)
#etc
现在,这似乎工作正常。我想作为一个初步问题,我应该问这是否是解决此问题的正确方法,或者是否有一种不同的方式来构建我的代码更可取。
但我的主要问题是,当我在 a.py 上运行 pylint 时,我会收到类似“未使用的导入 - 导入 loggingsetup”的警告,因为我实际上并没有从 loggingsetup 调用任何方法或函数。
我可以做一些事情,比如将 loggingsetup 的主体重新定义为一个函数并调用它,但这似乎很愚蠢且容易出错(如果我确实从其他地方导入 loggingsetup,我不得不担心调用它两次,如果我了解 python 如何处理导入,这不是我当前设置的问题)。
我显然可以告诉 pylint 忽略警告,但我想我会先在这里询问以确保这实际上不是我应该以不同方式处理的事情。
【问题讨论】:
-
导入一个模块只是为了它的副作用对我来说是错误的。它使您的代码的意图更难辨别。显式优于隐式。
-
这只是一个警告,您可能忘记了某些事情和/或可能正在做一些不必要的事情。如果不是这种情况,请忽略它。
-
我有点不同意 martineau 的上述观点。是的,有时事情就是这样,你必须忽略警告,但通常警告不应该被视为“友好提醒”并且在不确定的情况下忽略,这就是为什么我要确定我可以忽略它,或者获得更好的方法。