Questions tagged «with-statement»

许多语言都有With语句。Python with语句使用关联的上下文管理器创建一个新的上下文。当上下文(代码块)再次退出时,将通知上下文管理器。请对SQL WITH构造使用“ common-table-expression”。

10
python“ with”语句的目的是什么?
我with今天是第一次遇到Python 语句。我已经使用Python几个月了,甚至不知道它的存在!考虑到它的地位有些晦涩,我认为值得一问: Python with语句旨在用于什么? 你用它来做什么? 我需要了解任何陷阱,还是与其使用相关的常见反模式?有什么try..finally比这更好用的情况with吗? 为什么没有更广泛地使用它? 哪些标准库类与之兼容?

6
“ with”语句中有多个变量?
使用withPython中的语句可以声明多个变量吗? 就像是: from __future__ import with_statement with open("out.txt","wt"), open("in.txt") as file_out, file_in: for line in file_in: file_out.write(line) ...还是同时清理两个资源是问题吗?


6
解释Python的'__enter__'和'__exit__'
我在某人的代码中看到了这一点。这是什么意思? def __enter__(self): return self def __exit__(self, type, value, tb): self.stream.close() from __future__ import with_statement#for python2.5 class a(object): def __enter__(self): print 'sss' return 'sss111' def __exit__(self ,type, value, traceback): print 'ok' return False with a() as s: print s print s



4
在try-except块中使用python“ with”语句
这是将python“ with”语句与try-except块结合使用的正确方法吗? try: with open("file", "r") as f: line = f.readline() except IOError: <whatever> 如果是这样,请考虑使用旧的处理方式: try: f = open("file", "r") line = f.readline() except IOError: <whatever> finally: f.close() 这里的“ with”语句的主要好处是我们可以摆脱三行代码吗?对于这个用例,这似乎并不吸引我(尽管我知道“ with”语句还有其他用途)。 编辑:以上两个代码块的功能是否相同? EDIT2:前几个答案大体上谈及使用“ with”的好处,但是这里似乎没有什么好处。我们已经(或者应该已经)明确地调用f.close()多年了。我想一个好处是草率的编码器将从使用“ with”中受益。

3
在python的自定义类中实现对'with object()as f'的使用
我必须在python中打开一个类似文件的对象(它是通过/ dev /的串行连接),然后关闭它。这是在我的课堂的几种方法中完成的。我的工作方式是在构造函数中打开文件,然后在析构函数中关闭文件。我遇到了奇怪的错误,我认为这与垃圾收集器有关,因此,我仍然不习惯于不确切知道何时删除对象= \ 我这样做的原因是因为tcsetattr每次打开它时都必须使用大量参数,并且在整个地方进行所有操作都会很烦人。所以我想实现一个内部类来处理所有事情,这样我就可以使用它 with Meter('/dev/ttyS2') as m: 我当时在网上寻找,但找不到如何实现with语法的真正好答案。我看到它使用__enter__(self)和__exit(self)__方法。但是,我要做的就是实现那些方法,并且可以使用with语法吗?还是还有更多呢? 是否已经有关于如何执行此操作的示例,或者是否已有文件说明了如何在我可以查看的文件对象上实现该文件?

8
Python中的带条件语句
有没有一种方法可以用with语句开始代码块,但是有条件地? 就像是: if needs_with(): with get_stuff() as gs: # do nearly the same large block of stuff, # involving gs or not, depending on needs_with() 为了明确起见,一种情况将在with语句中包含一个块,而另一种可能性将是相同的块,但未包含(即,好像没有缩进) 当然,最初的实验会产生压痕错误。

10
VB.NET“带有”语句-拥抱还是避免?
在工作中,我经常从事一些项目,在这些项目中,必须在构造过程中或生命周期的早期设置某些对象的众多属性。为了方便和易读,我经常使用该With语句来设置这些属性。我发现 With Me.Elements .PropertyA = True .PropertyB = "Inactive" ' And so on for several more lines End With 看起来比 Me.Elements.PropertyA = True Me.Elements.PropertyB = "Inactive" ' And so on for several more lines 对于很长的仅设置属性的语句。 我注意到With调试时使用存在一些问题。但是,我想知道是否有任何令人信服的理由避免With在实践中使用?我一直认为在以上两种情况下通过编译器生成的代码基本上是相同的,这就是为什么我总是选择编写自己认为更具可读性的代码。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.