【问题标题】:What's the advantage of using 'with .. as' statement in Python?在 Python 中使用 'with .. as' 语句有什么好处?
【发布时间】:2011-02-13 20:47:49
【问题描述】:
使用 open("hello.txt", "wb") 作为 f: f.write("你好 Python!\n")

好像是一样的

f = open("hello.txt", "wb")
f.write("Hello Python!\n")
f.close()

使用 open .. 代替 f = 有什么好处? 它只是语法糖吗?只省一行代码?

【问题讨论】:

标签: python with-statement


【解决方案1】:

如果f.write()期间发生异常,前者仍然关闭f

【讨论】:

    【解决方案2】:

    如果f.write 抛出异常,则在使用with 时会调用f.close(),而在第二种情况下不会调用。另外f 的作用域更小,使用with. 时代码更干净

    【讨论】:

      【解决方案3】:

      为了与with 语句版本等效,您编写的代码应如下所示:

      f = open("hello.txt", "wb")
      try:
          f.write("Hello Python!\n")
      finally:
          f.close()
      

      虽然这看起来像是语法糖,但它可以确保您释放资源。一般来说,世界比这些人为的例子更复杂,如果你忘记了try.. except... 或无法处理极端情况,你手上就有资源泄漏。

      with 语句可以帮助您避免这些泄漏,从而更轻松地编写干净的代码。完整的解释请看PEP 343,里面有很多例子。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多