Форум сайта python.su
253
как проще написать вложенные with - смущают бООльшые отступы
with open_db() as db:
with open_connection() as conn:
with open("a.dat") as file1:
with open("b.dat") as file2:
with getuserlock() as gu
do something
...............
...............
...............
...............
{
dblinker linker;
dbconnector connector;
ifstream f1;f.exceptions(0xffff);f1.open("a.dat");
ifstream f2;f.exceptions(0xffff);f2.open("b.dat");
userlock lock;
do something
...............
...............
...............
...............
}with li(open_db(),
open_connection(),
open("a.dat"),
open("b.dat"),
getuserlock()) as db,file1,file2,gu:
do something
...............
...............
...............
...............
Офлайн
14
Если не можете использовать Python3 — делайте через contextlib.nested
Офлайн
32
>>> A = type('A',(object,),{})
>>> with A() as a, A() as b:
... passОфлайн
253
спасибо
Офлайн
857
это, по ходу, баг
по идее, должно это работать:
with open_db() as db, \
open_connection() as conn, \
open("a.dat") as file1, \
open("b.dat") as file2, \
getuserlock() as gu:
do something
with open('/etc/passwd') as f1, \
open('/etc/profile') as f2, \
open('/etc/bashrc') as f3:
for a, b, c in zip(f1, f2, f3):
print(a, b, c)Отредактировано (Авг. 3, 2011 08:10:45)
Офлайн