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

在Python中使用'with .. as'语句有什么好处?

龚沛
2023-03-14
问题内容
使用open(“ hello.txt”,“ wb”)为f:
    f.write(“ Hello Python!\ n”)

似乎与

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

使用open .. as代替f =有什么好处?只是语法糖吗?仅保存一行代码


问题答案:

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

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

虽然这看起来像语法糖,但可以确保您释放资源。通常,这个世界比这些人为的例子要复杂得多,如果您忘记了try.. except...一个案例或无法处理一个极端案例,那么您将面临资源泄漏。

with语句使您免于那些泄漏,使编写干净的代码更加容易。有关完整的说明,请参阅PEP
343
,其中有很多示例。



 类似资料:
  • 问题内容: 我今天是第一次遇到Python 语句。我已经使用Python几个月了,甚至不知道它的存在!考虑到它的地位有些晦涩,我认为值得一问: 语句旨在用于什么? 你用它来做什么? 我需要了解任何陷阱,还是与其使用相关的常见反模式?有什么比这更好用的情况吗? 为什么没有更广泛地使用它? 哪些标准库类与之兼容? 问题答案: 我相信这已经在我之前的其他用户那里得到了回答,因此我仅出于完整性的考虑而添加

  • 问题内容: 这是将python“ with”语句与try-except块结合使用的正确方法吗? 如果是这样,请考虑使用旧的处理方式: 这里的“ with”语句的主要好处是我们可以摆脱三行代码吗? 对于这个用例,这 似乎并不吸引我(尽管我知道“ with”语句还有其他用途)。 编辑:以上两个代码块的功能是否相同? EDIT2:前几个答案大体上谈及使用“ with”的好处,但是这里似乎没有什么好处。我

  • 任何一门编程语言中,文件的输入输出、数据库的连接断开等,都是很常见的资源管理操作。但资源都是有限的,在写程序时,必须保证这些资源在使用过后得到释放,不然就容易造成资源泄露,轻者使得系统处理缓慢,严重时会使系统崩溃。 例如,前面在介绍文件操作时,一直强调打开的文件最后一定要关闭,否则会程序的运行造成意想不到的隐患。但是,即便使用 close() 做好了关闭文件的操作,如果在打开文件或文件操作过程中抛

  • 问题内容: 我熟悉使用python的语句作为确保在引发异常时确保对象完成的方法。这通常看起来像 这是简写 或类可能呈现的其他任何其他敲定例程。 我最近遇到了一段处理OpenGL的代码,它给出了以下内容: 请注意,没有任何关键字。这是否表示仍要调用该类的和方法,但是该对象从未在块中显式使用(即,它通过全局变量或隐式引用工作)?还是有其他含义使我难以理解? 问题答案: 上下文管理器可以 选择 返回一个

  • 问题内容: 什么是 全球声明 ?以及如何使用?我已经阅读了Python的官方定义; 但是,这对我来说没有多大意义。 问题答案: python中的每个“变量”都限于特定范围。python“文件”的范围是模块范围。考虑以下: 具有局部作用域的对象会在函数退出后立即死亡,并且永远无法检索(除非您拥有它们),但是在函数内,您可以访问模块级作用域(或任何包含的作用域)中的变量: 但是,您不能在该引用上使用赋

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