49得票3回答
使用"with"语句在Python中打开文件比使用try/catch更好吗?

我了解到with语句可以帮助你将这个转化为: try: f = open(my_file) do_stuff_that_fails() except: pass finally: f.close() 进入: with open(my_file) as f...

45得票2回答
在Python中,将'with'和'yield'组合使用是否安全?

在Python中,使用上下文管理器自动关闭文件是一种常见的习惯用语:with open('filename') as my_file: # do something with my_file # my_file gets automatically closed after exit...

43得票8回答
跳过执行-with-块。

我正在定义一个上下文管理器类,如果在实例化期间满足某些条件,我想能够跳过代码块而不引发异常。例如,class My_Context(object): def __init__(self,mode=0): """ if mode = 0, proceed ...

42得票2回答
Python内置的__exit__参数类型有哪些?

类具有可定义的函数__exit__,允许实现上下文管理器。 它需要以下必需参数:def __exit__(self, exc_type, exc_val, exc_tb): 但是我找不到它们是什么以及它们的类型的明确定义。 这是我最好的猜测,它们是什么以及为什么这样,但我并不完全确定:de...

39得票3回答
Python的__enter__ / __exit__与__init__(或__new__)/ __del__的区别

我搜索过后,无法找到任何使用Python的__enter__/__exit__的好理由,而不是使用__init__(或者__new__?)/__del__。我理解__enter__/__exit__是用于与with语句一起作为上下文管理器使用的,而with语句确实很好用。但是,这样做的相应问题...

39得票6回答
在Python中的RAII - 离开作用域时自动销毁

我一直在尝试在Python中找到 RAII(资源获取即初始化)。 RAII 是 C++ 中的一种模式,它在对象创建时进行初始化。如果初始化失败,则抛出异常。通过这种方式,程序员知道对象永远不会处于半构造状态。Python 可以做到这一点。 但是 RAII 还利用了 C++ 的作用域规则来确保...

39得票3回答
在Python中,一行上的多个“with”语句是否等同于嵌套的“with”语句?

这两个语句是否等价?with A() as a, B() as b: # do something with A() as a: with B() as b: # do something 我之所以问是因为a和b都会改变全局变量(这里是TensorFlow)并且b依赖于a所做...

39得票2回答
Python多进程库错误(AttributeError:__exit__)

当我使用pool.map(funct, iterable)时,出现了以下错误: AttributeError: __exit__ 不提供解释,只返回模块中pool.py文件的堆栈跟踪。 使用方式如下: with Pool(processes=2) as pool: pool.m...

39得票5回答
将重试封装到“with”块中

我希望将数据库事务逻辑封装为一个with块:在事务中包装代码并处理各种异常(锁定问题)。这很简单,但我还想让块在特定异常后将代码块重试封装起来。我无法找到将其整齐地打包成上下文管理器的方法。 是否可以在with语句中重复代码? 我希望像这样简单地使用它,这真的很不错。def do_work...

36得票5回答
Python条件“with”锁设计

我正在尝试使用with语句进行一些共享锁定def someMethod(self, hasLock = False): with self.my_lock: self.somethingElse(hasLock=True) def somethingElse(s...