首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在python中创建新的作用域?

如何在python中创建新的作用域?
EN

Stack Overflow用户
提问于 2009-02-12 15:53:59
回答 11查看 13.8K关注 0票数 30

在许多语言(和地方)中,通过创建像这样的块来创建本地作用域是一种很好的实践。

代码语言:javascript
复制
void foo()
{
     ... Do some stuff ...

     if(TRUE)
     {
         char a;
         int b;

         ... Do some more stuff ...
     }

     ... Do even more stuff ...
 }

我如何在python中实现这一点,而不需要意外的缩进错误,也不需要使用某种https://stackoverflow.com/questions/541705/is-iftrue-a-good-idea-in-c技巧。

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2009-02-12 16:10:01

在Python中,范围划分分为三种类型:全局、本地和类。您可以创建专门的“作用域”字典,以传递给exec / eval()。此外,还可以使用嵌套作用域(在另一个作用域中定义函数)。我发现这些在我所有的代码中都足够了。

正如Douglas已经说过的,在其他语言中使用它的主要原因是变量作用域,而这在Python中并不真正发生。此外,Python是我使用过的最易读的语言。这样做会有悖于可读性,比如“如果是真的”(你说你想要避免的)。在这种情况下,我认为最好的选择是将代码重构为多个函数,或者使用单个作用域。我认为Python中的可用作用域足以涵盖所有可能发生的情况,因此不应该真的需要本地范围。

票数 6
EN

Stack Overflow用户

发布于 2009-02-12 15:57:19

为什么要在python中创建新的作用域呢?

在其他语言中这样做的正常原因是变量作用域,但在python中不发生这种情况。

代码语言:javascript
复制
if True:
    a = 10

print a
票数 8
EN

Stack Overflow用户

发布于 2009-02-12 16:11:08

如果您只想创建临时变量并让它们在使用后立即被垃圾收集,则可以使用

代码语言:javascript
复制
del varname

当你不再想要他们的时候。

如果只是为了美观,您可以使用注释或额外的换行符,但不需要额外的缩进。

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

https://stackoverflow.com/questions/541926

复制
相关文章

相似问题

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