CodeQL 文档

在模块级别使用 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

单击以在 CodeQL 代码库中查看查询

在模块级别使用 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

参考

  • ©GitHub, Inc.
  • 条款
  • 隐私