是否可以在async with
语句中创建多个变量?
我知道等效的同步版本从这里存在:一个';带有';陈述
所以同步版本看起来是这样的:
# some files
f1 = 'tests/test_csv.csv'
f2 = 'tests/some_file.txt'
f3 = ''
with open(f1) as a, open(f2) as b:
contents_1 = a.readlines()
contents_2 = b.readlines()
print('this is contents 1:')
print(contents_1)
print('this is contents 2:')
print(contents_2)
这很好用。
但是,这会以类似的方式扩展到async
版本吗?
例如:
async with A() as a, B() as b:
while True:
result_1 = await a.A()
result_2 = await b.B()
if (result_1):
print(result_1)
if (result_2):
print(result_2)
上面的方法行得通吗?如果不行,我们怎么能做到这一点?
是的,这是允许的。文档中说async with
的语法与with
相同,但前面有关键字async
with
的规范指出,列出多个项目相当于嵌套它们。所以你的代码相当于:
async with A() as a
async with B() as b:
while True:
result_1 = await a.A()
result_2 = await b.B()
if (result_1):
print(result_1)
if (result_2):
print(result_2)