gpt4 book ai didi

python - 在 lambda 中使用上下文管理器,怎么样?

转载 作者:太空宇宙 更新时间:2023-11-04 10:04:22 27 4
gpt4 key购买 nike

如何在 lambda 中使用上下文管理器?黑客接受。推迟关于这是 lambda 的错误用法的意见。

我知道我可以做到:

def f():
with context():
return "Foo"

但是我想做这样的事情:

lambda: with context(): "Foo"

最佳答案

您不能用表达式替换 with 所做的工作,不。也没有任何技巧可以让您到达那里,因为没有办法在表达式中处理异常和终结。

那是因为您只能在 lambda 中使用一个表达式with 是一个语句,而不是一个表达式。您必须将其替换为异常处理(try..except..finally)并调用 __enter__ and __exit__ methods (存储 __exit__ 方法 first)。但是,异常处理只能用语句完成,因为异常会立即结束当前表达式。参见 Python Try Catch Block inside lambda .

唯一的选择是坚持使用适当的函数。

关于python - 在 lambda 中使用上下文管理器,怎么样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41782289/

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