CodeQL 文档

应该使用“with”语句

ID: py/should-use-with
Kind: problem
Security severity: 
Severity: recommendation
Precision: very-high
Tags:
   - maintainability
   - readability
   - convention
Query suites:
   - python-security-and-quality.qls

单击查看 CodeQL 代码库中的查询

PEP343 引入了with语句,以便对try-finally语句的标准使用进行分解。使用这种简化方法使代码更易于阅读。

建议

查看代码,确定是否仅使用try-finally来确保关闭资源。如果唯一的目的是确保关闭资源,则将try-finally语句替换为with语句。

示例

以下代码显示了确保文件始终关闭(即使发生错误)的不同方法的示例。在第二个示例中,try-finally块被更简单的with语句替换。


f = open("filename")
try:                         # Method of ensuring file closure
    f.write(...)
finally:
    f.close()


with open("filename") as f:  # Simpler method of ensuring file closure
    f.write(...)

参考文献

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