我正在学习Python,并且正在尝试with **** as ****:
语句。我认为它的工作原理类似于C#的using(****) {
,但恐怕我正在关注过时的示例。
这是我的代码:
# -*- coding: iso-8859-1 -*-
import pprint
pow = 1, 2, 3
with pprint.pprint as pprint:
pprint(pow)
我假设这里发生的是
pprint
,在我的小闭包中是pprint.pprint
函数的别名。我收到一个奇怪的错误:Traceback (most recent call last):
File "test.py", line 7, in <module>
with pprint.pprint as pprint:
AttributeError: __exit__
所以现在我想我正在像以前一样使用旧版本Python的语法(
print "Hello"
)为什么我的代码无法按预期工作?
最佳答案
with
语句不能满足您的期望。它使用“上下文管理器协议(protocol)”,因此希望传递给context manager。
要创建别名,只需将其分配给新变量:
import pprint
pow = 1, 2, 3
pp = pprint.pprint
pp(pow)
关于python - Python 3.2 "with/as"做什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5773545/