应该使用“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
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(...)
参考文献¶
Python 语言参考:The with statement.
Python 标准库:Context manager .
Python PEP 343:The “with” Statement.