首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >As suit在with语句中赋值globaly,python

As suit在with语句中赋值globaly,python
EN

Stack Overflow用户
提问于 2016-09-23 03:16:56
回答 2查看 19关注 0票数 1

如何在with语句中使as套件中的VAR成为绑定到with作用域的非全局变量?在下面的示例中,在with语句之后也在with外部将f变量赋值

代码语言:javascript
复制
with open("some_text.txt") as f:
    pass

print(f.closed) 
print(f)

这将返回:

代码语言:javascript
复制
>>> True
<_io.TextIOWrapper name='some_text.txt' mode='r' encoding='UTF-8'>

即使我在函数中使用withas变量仍然是绑定的:

代码语言:javascript
复制
def longerThan10Chars(*files):
    for my_file in files:
        with open(my_file) as f:
            for line in f:
                if len(line) >= 10:
                    print(line)
    print(f.closed)

在这里,f.closed仍然打印True

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-23 03:22:01

Python作用域边界是函数,没有别的。没有将with块设置为作用域的选项;如果必须将其设置为单独的作用域,则将其放入函数中;as目标只是另一个本地对象,不会存在于该新函数之外。

或者,只需显式删除该名称,即可使该名称在with语句后消失:

代码语言:javascript
复制
with open("some_text.txt") as f:
    pass

del f
票数 4
EN

Stack Overflow用户

发布于 2016-09-23 03:23:04

要删除f的绑定,请执行以下操作:

代码语言:javascript
复制
del locals()['f']

您必须手动执行此操作。with...as块不能为您做到这一点。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39647214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档