首页 文章

什么是python关键字“with”用于什么? [重复]

提问于
浏览
383

这个问题在这里已有答案:

什么是python关键字“with”用于什么?

示例来自:http://docs.python.org/tutorial/inputoutput.html

>>> with open('/tmp/workfile', 'r') as f:
...     read_data = f.read()
>>> f.closed
True

2 回答

  • 377

    Explanation from the Preshing on Programming blog

    当你有两个相关的操作,你想要成对执行时,它们很方便,中间有一段代码 . 经典的例子是打开一个文件,操纵文件,然后关闭它:用open('output.txt','w')作为f:
    f.write('你好!')
    上面的with语句将在嵌套的代码块之后自动关闭文件 . (继续阅读以确切了解关闭是如何发生的 . )使用with语句的优点是无论嵌套块如何退出,都可以保证关闭文件 . 如果在块结束之前发生异常,它将在异常被外部异常处理程序捕获之前关闭该文件 . 如果嵌套块包含return语句或continue或break语句,那么with语句也会在这些情况下自动关闭文件 .

  • 330

    在python中,在处理非托管资源(如文件流)时使用 with 关键字 . 它类似于VB.NET和C#中的 using 语句 . 它允许您确保在使用它的代码完成运行时资源是"cleaned up",即使抛出异常也是如此 . 它为 try/finally 块提供'syntactic sugar' .

    来自Python Docs

    with语句澄清了之前将使用try ... finally块的代码,以确保执行清理代码 . 在本节中,我将讨论通常会使用的语句 . 在下一节中,我将检查实现细节,并展示如何编写与此语句一起使用的对象 . with语句是一个控制流结构,其基本结构是:with expression [as variable]:
    与块
    表达式被计算,它应该导致一个支持上下文管理协议的对象(即具有__enter __()和__exit __()方法) .

    根据Scott Wisniewski的评论更新固定的VB标注 . 我确实把 withusing 混淆了 .

相关问题