gpt4 book ai didi

python - "as"语句在python中是什么意思?

转载 作者:太空宇宙 更新时间:2023-11-03 13:19:13 25 4
gpt4 key购买 nike

我刚开始学习 Flask 框架,想知道“as”语句的作用是什么?它与“with”语句结合使用。

例子如下:

def init_db():
with closing (connect_db()) as db:
with app.open_resource('schema.sql', mode='r') as f:
db.cursor().executescript(f.read())
db.commit

最佳答案

as 关键字用于向几个不同的语句添加子句(例如 import );没有“as 语句”。

with 语句中,这意味着 with 上下文的值被分配给该变量。准确的解释在 The with statement 下的文档中。 , With Statement Context Managers , 和 Context Manager Types ; PEP 343给出了更具可读性的解释(尽管它也有点过时了)。


在简单的情况下,对象充当其自己的上下文管理器,如文件或decimal.localcontext,对象被分配给变量。这里,fopen('spam') 返回的文件:

with open('spam') as f:

在稍微复杂的情况下,上下文管理器提供一些其他 对象分配给变量。在 closing(foo) 的情况下,对象是首先给出的 foo。所以在这里,g 最终与 f 相同,即使 closing(f) 不是同样的事情:

f = open('spam')
with closing(f) as g:

一些上下文管理器根本不提供任何对象。在这种情况下,如您所料,as f 会将 f 分配给 None,您通常没有充分的理由这样做用它。因此,as 子句是可选的。例如,使用 threading.Lock:

with my_lock:

如果您从头开始构建上下文管理器,则提供对象(无论是 self 还是其他方式)绑定(bind)到 as 目标的方式是通过从__enter__ 方法。或者,如果您围绕生成器使用 @contextmanager 装饰器构建它们,您可以通过 yield 对象来实现。

关于python - "as"语句在python中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20056716/

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