当前位置: 首页 > 面试题库 >

Python 2.6中的多上下文`with`语句

汪才
2023-03-14
问题内容

我喜欢withPython 2.7中多上下文语句的便利性:

with open('a.txt') as a, open('b.txt') as b:
   do_many_amazing_things(a, b)

但是,我需要保持与2.6的兼容性。

with是通过引入到2.5的__future__,但是在文档中找不到关于多上下文版本被反向移植到2.6的任何信息。

有什么我想念的吗?

编辑:我知道可以嵌套with语句。我在问是否可以使用多个with语句。


问题答案:

如果没有向后兼容的等效方法,我将使多上下文with语句成为一组单上下文嵌套with语句来处理。

with open('a.txt') as a: 
    with open('b.txt') as b:
        do_many_amazing_things(a, b)

编辑以解决您的修改:

如果您坚持不嵌套多余的with语句,则可以始终使用contextlib

import contextlib
with contextlib.nested(open("a.txt"), open("b.txt")) as (a, b):
    do_many_amazing_things(a,b)

至于使用with将来导入的多个语句,with据我所知这是不可能的



 类似资料:
  • 本文向大家介绍Python中的上下文管理器和with语句的使用,包括了Python中的上下文管理器和with语句的使用的使用技巧和注意事项,需要的朋友参考一下 Python2.5之后引入了上下文管理器(context manager),算是Python的黑魔法之一,它用于规定某个对象的使用范围。本文是针对于该功能的思考总结。 为什么需要上下文管理器? 首先,需要思索下为什么需要引入上下文管理器。

  • 本文向大家介绍Python中的with语句与上下文管理器学习总结,包括了Python中的with语句与上下文管理器学习总结的使用技巧和注意事项,需要的朋友参考一下 0、关于上下文管理器 上下文管理器是可以在with语句中使用,拥有__enter__和__exit__方法的对象。 相当于以下情况的简化: 换言之,PEP 343中定义的上下文管理器协议允许将无聊的try...except...fina

  • 本文向大家介绍python中with语句结合上下文管理器操作详解,包括了python中with语句结合上下文管理器操作详解的使用技巧和注意事项,需要的朋友参考一下 前言 所谓上下文管理器即在一个类中重写了__enter__方法和__exit__方法的类就可以成为上下文管理器类。 我们可以通过with语句结合上下文管理器简化一些操作。 使用with语句结合自定义上下文管理器完成数据库相应的操作,代码

  • com.ibm.DB2.jcc.am.sqlsyntaxerroreXception:DB2 SQL错误:sqlcode=-199,sqlstate=42601,sqlerrmc=with;具有WHERE组顺序相交减除UNION),FETCH,driver=4.19.26 但是,如果我直接在大型机控制台中运行相同的查询,它工作得很好。 如何在Spark的sql上下文中使用WITH子句? filt_

  • 问题内容: 在python中创建多行的干净方法是什么?我想在一个内打开多个文件,但它足够靠右,足以在多行上显示。像这样: 不幸的是,这是一个。所以我尝试了这个: 也是语法错误。但是,这可行: 但是,如果我想发表评论怎么办?这不起作用: s的位置也没有任何明显的变化。 有没有一种干净的方法来创建允许多行注释的多行语句? 问题答案: 这在Python 3.9中已修复! https://github.c

  • 我正在学习核心java,并学习了多线程。 我已经阅读了标准文档和这个问题,所以。。。但是在线程上下文中找不到合适的解决方案。 用书中的话说: 在两次启动线程时引发。 我不明白它说什么...甚至没有给出例子... 当它发生在线程上下文中时?有人能举个例子吗?