在模块级别使用 print 语句¶
ID: py/print-during-import
Kind: problem
Security severity:
Severity: recommendation
Precision: high
Tags:
- reliability
- maintainability
- convention
Query suites:
- python-security-and-quality.qls
在模块级别使用 print
语句可能会导致在导入时出现意外输出。 这反过来意味着如果程序只能将实际输出写入标准输出,则其他代码无法安全地导入有问题的模块。
建议¶
将 print
语句替换为对某种形式的日志记录函数的调用,或使用 warnings
模块。
示例¶
在示例中,导入模块可能会导致打印消息,这可能会干扰程序的操作。
try:
import fast_system as system
except ImportError:
print ("Cannot import fast system, falling back on slow system")
import slow_system as system
#Fixed version
import logging
try:
import fast_system as system
except ImportError:
logging.info("Cannot import fast system, falling back on slow system")
import slow_system as system