最近学习了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 语句的示例。在某些情况下这个变量是不必要的吗?
最佳答案
是的,您可以在此答案中找到其中几个:What is the python "with" statement designed for?
我能想到的最直接的是线程锁(也在上一个链接中列出):
lock = threading.Lock()
with lock:
# Critical section of code
为了记录,我还要引用 the with
doc :
The with statement is used to wrap the execution of a block with methods [...]. This allows common try...except...finally usage patterns to be encapsulated for convenient reuse.
由于 try... except...finally
中并不总是需要变量,因此 with
语句中也不一定需要目标变量。
关于python - 为什么 with 语句中变量是可选的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28747063/