首页 > TAG信息列表 > with-statement

javascript-一些带有“ with”语句和调用的复杂行为

var a = ({ x: 10, foo: function () { function bar() { console.log(x); console.log(y); console.log(this.x); } with (this) { var x = 20; var y = 30; bar.

Python-为具有上下文管理器的类方法创建模拟测试

我正在尝试为具有上下文管理器和许多调用的类函数的方法编写单元测试.我很难理解如何正确模拟该函数,以便可以测试返回值.我要模拟的类是db.正如您在下面看到的那样,我正在使用补丁程序,但是我不知道如何获取它以返回正确的方法调用.我正在得到一个通用的模拟函数,而不是我期望的返

Python的“ with”语句:使用__enter __ / __ exit__正确嵌套/派生类

如何正确嵌套与类相关的行为(例如,在派生或实例化时)? 这对我有用,但我想知道是否有专用的方法可以做到这一点: class class_a: def __init__(self): print('class_a::__init__') def __enter__(self): print('class_a::__enter__') return self

好的Python,带有语句说明

我试过谷歌和其他地方,但似乎找不到with语句的很好的解释.在什么情况下有用?我知道它如何与文件一起使用,但还可以如何使用?解决方法:这是一个很好的例子: class controlled_execution: def __enter__(self): set things up return th

使用python with-statement进行咖喱?

我不确定这是否是“良好的python惯例”,但是可以定义一个自定义File-object,该对象可以执行以下操作: myfile = myopen('myfile.txt') with myfile: write('Hello World!') #notice we don't put "myfile.write(..)" here! 也就是说,文件上下文会创建一个函数“ write()”,这

上下文管理器的动态可迭代链接到单个with语句

我有一堆要链接的上下文管理器.乍一看,contextlib.nested看起来很合适.但是,该方法在文档中被标记为已弃用,该文档还指出,最新的with语句可直接允许这样做: Deprecated since version 2.7: The with-statement now supports this functionality directly (without the confusin

在语句外使用python变量

在Python脚本中,我遇到了一个在with语句内定义但在该语句外使用的变量,例如以下示例中的file: with open(fname, 'r') as file: pass print(file.mode) 凭直觉,我会说该文件不应在with语句之外,并且只能偶然地起作用.我在Python文档中找不到关于是否应该运行的结论性声明.这种

python – 没有“as”关键字的“with”语句的含义

我熟悉使用python的with语句作为在抛出异常时确保对象完成的一种方法.这通常看起来像 with file.open('myfile.txt') as f: do stuff... 这是短手的 f = file.open('myfile.txt'): try: do stuff... finally: f.close() 或者班级可能提出的任何其他终结程序. 我最

python – 使用上下文管理器时,对象变为None

为什么这不起作用: class X: var1 = 1 def __enter__(self): pass def __exit__(self, type, value, traceback): pass with X() as z: print z.var1 我明白了: print z.var1 AttributeError: 'NoneType' object has no attribute 'var1' 解决方法:将

javascript – 如何避免意外隐式引用全局对象上的属性?

是否可以在没有默认情况下所有脚本似乎具有的隐式with(全局)上下文的情况下执行代码块?例如,在浏览器中,是否有任何方法可以设置脚本,例如 const foo = location; 投 Uncaught ReferenceError: location is not defined 而不是访问window.location,当尚未首先声明位置?缺乏这种

对于在python中使用`with`关键字的类,我可以自己使用__repr __(print)吗?

我正在尝试创建一个与Python中的with关键字很好地匹配的对象.我知道你必须创建__enter__和__exit__方法,但我不太确定如何操纵对象.作为一个具体的例子,我写了一个创建本地空间的类,并在退出时清理: import tempfile, os, shutil class temp_workspace(object): def __enter__

Python语句,继续

我正在用python开发一个程序,并且达到了一个我不知道如何解决的问题. 我的意图是使用with语句,避免使用try / except. 到目前为止,我的想法是能够使用continue语句,因为它将在except中使用.但是,我似乎没有成功. 让我们假设这是我的代码: def A(object): def __enter__:

python – 检测上下文管理器嵌套

我最近一直想知道是否有办法检测上下文管理器是否嵌套. 我创建了Timer和TimerGroup类: class Timer: def __init__(self, name="Timer"): self.name = name self.start_time = clock() @staticmethod def seconds_to_str(t): return str(time

javascript – 带语句的性能影响

好的,所以,我在过去四十八小时内已经看到了这一点,我需要将其作为一个问题提出来.在“JavaScript for Professional Web Developers”(2012)中,它说的与MDN相同: Use of the with statement is not recommended, as it may be the source of confusing bugs and compatibility

如何创建一个类似字符串的类?

我有一个上下文管理器,它将输出捕获到一个字符串,用于在with语句下缩进的代码块.此上下文管理器生成一个自定义结果对象,当块完成执行时,该对象将包含捕获的输出. from contextlib import contextmanager @contextmanager def capturing(): "Captures output within a 'with'

Python:在类方法上使用contextmanager的意外行为

参见英文答案 > “Least Astonishment” and the Mutable Default Argument                                    32个 >            Python constructor and default value                          

python – 为zipfile定义的__enter__和__exit__在哪里?

基于with statement >加载上下文管理器的__exit __()以供以后使用. >调用上下文管理器的__enter __()方法. 我见过其中一个用于zipfile的用法 问题&GT我已经检查了位于这里的zipfile的源代码: /usr/lib/python2.6/zipfile.py 我不知道__enter__和__exit__函数的定义在哪里? 谢谢解决

是否有一个Java等同于Javascript的声明?

参见英文答案 > WITH statement in Java                                    7个 是否有类似的方式在Java中声明一个with语句(如在Javascript中),或者是否存在结构性原因导致无法实现这一点? 例如,这个Javascript: with(obj) { getHomeworkA

PHP相当于Javascript“with”范围语句

从Javascript移植一些代码我有这种不便.例如: 在javascript中我们可以生成此代码. var a, x, y; var r = 10; with (Math) { a = PI * r * r; x = r * cos(PI); y = r * sin(PI / 2); } 代替 a = Math.PI * r * r; x = r * Math.cos(Math.PI); y = r * Math.sin(Math.PI /

暂时在Python中更改变量的值

Python 3.4提供了这个简洁的工具来暂时重定向stdout: # From https://docs.python.org/3.4/library/contextlib.html#contextlib.redirect_stdout with redirect_stdout(sys.stderr): help(pow) The code并不是非常复杂,但我不想一遍又一遍地写它,特别是因为一些想法已经进入

python – 如何__enter__ n上下文管理器?

使用with语句,我们可以只使用一个级别的缩进/嵌套来输入许多上下文处理程序: >>> from contextlib import contextmanager >>> @contextmanager ... def frobnicate(n): ... print('frobbing {}'.format(n)) ... yield ... >>> frob1 = frobnicate(1) >>