【发布时间】:2011-03-02 18:45:25
【问题描述】:
假设您通过上下文管理器获取了三个对象,例如一个锁、一个数据库连接和一个 IP 套接字。 您可以通过以下方式获得它们:
with lock:
with db_con:
with socket:
#do stuff
但是有没有办法在一个块中做到这一点?像
with lock,db_con,socket:
#do stuff
此外,是否有可能,给定具有上下文管理器的未知长度对象数组,是否有可能以某种方式做到:
a=[lock1, lock2, lock3, db_con1, socket, db_con2]
with a as res:
#now all objects in array are acquired
如果答案是“否”,是因为需要这样的功能意味着糟糕的设计,还是我应该鼓励一下? :-P
【问题讨论】:
-
@timgeb 我已经started a discussion about this duplicate closure。我很抱歉没有早点@-通知你;它让我忘记了。
标签: python with-statement contextmanager