36得票7回答
在上下文管理器的__enter__()方法中捕获异常

在 __enter__() 中出现异常的情况下,是否有可能确保调用 __exit__() 方法? >>> class TstContx(object): ... def __enter__(self): ... raise Exception('Oops...

36得票3回答
使用可变数量的上下文管理器的contextlib.nested的替代方法

我们有一些代码,根据运行时参数调用不同数量的上下文管理器: from contextlib import nested, contextmanager @contextmanager def my_context(arg): print("entering", arg) t...

36得票4回答
使用With子句进行Oracle SQL插入

我对 SQL 不太熟悉,所以也许这是个愚蠢的问题,但我想知道是否有可能在 Insert Into 语句中使用 With 子句?或者有没有常见的解决方法?我的意思是像这样: With helper_table As ( Select * From dummy2 ) Insert Into du...

36得票1回答
__exit__的返回值

我理解: __enter__和__exit__用于实现上下文管理器。 如果 with 语句中出现异常,异常的类型、值和回溯信息都将传递给 __exit__ 方法。 __exit__ 可以处理异常: 返回 True:异常得到了优雅的处理 返回其他内容:with 语句会引发该异常 ...

35得票14回答
Delphi中的"with"关键字是一种不好的实践吗?

我已经阅读了一些关于 Delphi 中 with 关键字的不好的评价,但是我认为,只要不滥用它,它能使你的代码看起来更简单。 我经常把所有的 TClientDataSet 和 TField 放在 TDataModule 中。因此,在我的表格中,我会有这样的代码:procedure TMyFor...

34得票4回答
Python多行嵌套上下文管理器

在Python 2.6中,我们通常这样格式化嵌套的上下文管理器:with nested( context1, context2 ) as a, b: pass 自Python 2.7开始,nested已经过时。我看到很多例子都是将多个上下文管理器放在一行上,但是我找不到...

33得票4回答
多进程返回“too many open files”,但使用“with…as”可以解决。为什么?

我曾使用这个答案来在Linux平台上通过多进程(multiprocessing)运行Python并行命令。 我的代码类似于:import multiprocessing import logging def cycle(offset): # Do stuff def run()...

33得票2回答
Python的'with'语句,我应该使用contextlib.closing吗?

这是来自Flask教程的第三步: from contextlib import closing def init_db(): with closing(connect_db()) as db: with app.open_resource('schema.sql')...

31得票4回答
在R中,如何让函数内部的变量对该函数内部的较低级别函数可用?(使用with、attach、environment)

更新2 @G. Grothendieck发布了两种方法。第二种方法是在函数内部更改函数环境。这解决了我的过多编码复制的问题。我不确定在将我的脚本制作成包时,这是否是通过CRAN检查的好方法。当我有一些结论时,我会再次更新。 更新 我正在尝试将许多输入参数变量传递给f2,并且不想在函数内部对...

31得票8回答
Python上下文管理器,用于测量时间

我正在努力编写一段代码,可以测量“with”语句内所花费的时间,并将测得的时间(一个浮点数)赋值给“with”语句中提供的变量。 import time class catchtime: def __enter__(self): self.t = time.cloc...