with语句定义的变量在with-block之外可用吗?
问题内容:
考虑以下示例:
with open('a.txt') as f:
pass
# Is f supposed to be defined here?
我已经阅读过用于声明的语言文档(2.7)和PEP-343,但据我所知,他们对此事一言不发。
在CPython 2.6.5f
中,似乎确实是在with块之外定义的,但是我宁愿不要依赖于可能发生变化的实现细节。
问题答案:
是的,上下文管理器将在with语句之外可用,并且不依赖于实现或版本。with语句 不会 创建新的执行范围。