我看到了这个问题,我明白你何时想要使用with foo() as bar:,但我不明白你什么时候想做:
bar = foo()
with bar:
....
Run Code Online (Sandbox Code Playgroud)
这不仅仅是消除了使用的拆解利益with ... as,还是我误解了正在发生的事情?为什么有人想要使用with?
tor*_*rek 12
为了扩展@freakish的答案,with保证进入然后退出"上下文".什么是背景?嗯,这是"无论你做什么事情都是如此".一些显而易见的是:
不太明显的可能甚至包括某些类型的异常捕获:您可能会捕获除以零,执行一些算术,然后停止捕获它.当然,它内置于Python语法中:try... except作为一个块!而且,实际上,with它只是Python的try/except/finally机制的一个特例(技术上,try/finally包含在另一个try块中;请参阅注释).
当上下文条目提供您想要在块内使用的某些值时,块的as一部分with很有用.对于文件或数据库记录,很明显您需要新打开的流或刚刚获得的记录.在捕获异常或对数据结构进行锁定的情况下,可能不需要从上下文条目中获取值.
例如,当您想要使用时Lock():
from threading import Lock
myLock = Lock()
with myLock:
...
Run Code Online (Sandbox Code Playgroud)
你真的不需要这个Lock()对象.你只需要知道它已经开启了.
| 归档时间: |
|
| 查看次数: |
1674 次 |
| 最近记录: |