我正在学习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/

10-12 17:00