我最近在python中了解了'with'语句及其用法,主要来自文章Understanding Python's "with" statement和official documentation for with statement。
最常用的例子对我来说是可以理解的
with open("x.txt") as f:
data = f.read()
do something with data
好的,我们打开文件x.txt
,我们用它执行一些任务,它会自动关闭。 f
变量用于读入文件并执行其他任务。
但在官方文档中,表达式后的目标变量是可选的:
with_stmt ::= "with" with_item ("," with_item)* ":" suite
with_item ::= expression ["as" target]
我没有找到任何没有目标变量的with语句示例。是否存在不需要此变量的情况?
答案 0 :(得分:2)
from threading import Lock
lock = Lock()
with lock:
# access critical data
# continue
希望它有所帮助。
答案 1 :(得分:2)
是的,您可以在这个答案中找到其中几个:What is the python "with" statement designed for?
我能想到的最直接的是线程锁定(也在前一个链接中列出):
lock = threading.Lock()
with lock:
# Critical section of code
对于记录,我还引用the with
doc:
with语句用于使用方法[...]包装块的执行。这允许常见的尝试...除了...最终使用模式被封装以便于重用。
由于您并不总是需要try...except...finally
中的变量,因此您不一定需要with
语句中的目标变量。