gpt4 book ai didi

python - 何时在 python 中使用 "with"

转载 作者:IT老高 更新时间:2023-10-28 21:02:43 25 4
gpt4 key购买 nike

我看到了this question , 我知道你什么时候想使用 with foo() as bar:,但我不明白你什么时候只想这样做:

bar = foo()
with bar:
....

这不只是消除了使用 with ... as 的好处,还是我误解了正在发生的事情?为什么有人只想使用 with

最佳答案

为了扩展@freakish 的答案,with 保证进入然后退出“上下文”。上下文到底是什么?嗯,它是“不管你用什么东西做的”。一些明显的是:

  • 锁:获取锁,操作一些数据,然后释放锁。
  • 外部文件/流:您打开一个文件,读取或写入它,然后关闭它。
  • 数据库记录:你找到一条记录(通常也会锁定它),使用一些字段,也许更改它们,然后释放记录(这也将其解锁)。

不太明显的甚至可能包括某些类型的异常捕获:您可能会捕获除以零,进行一些算术运算,然后停止捕获它。当然,这是内置在 Python 语法中的:try ... except 作为一个 block !而且,事实上,with 只是 Python 的 try/except/finally 机制的一个特例(技术上,try/finally 包裹在另一个 try block ;见评论)。

with block 的 as 部分在上下文条目提供一些您想在 block 内使用的值时很有用。对于文件或数据库记录,很明显您需要新打开的流或刚刚获得的记录。在捕获异常或持有数据结构锁的情况下,可能不需要从上下文条目中获取值。

关于python - 何时在 python 中使用 "with",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17053103/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com