当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何在python中创建新的作用域》经验,为你挑选了2个好方法。

在许多语言(和地区)有通过创建类似于块创建本地范围的一个很好的练习本.

void foo()
{
     ... Do some stuff ...

     if(TRUE)
     {
         char a;
         int b;

         ... Do some more stuff ...
     }

     ... Do even more stuff ...
 }

如何在python中实现这一点而不会出现意外的缩进错误,并且不使用某种if True: 技巧



1> Douglas Leed..:

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

在其他语言中执行此操作的正常原因是变量作用域,但在python中不会发生这种情况.

if True:
    a = 10

print a


最后我检查过,CPython的垃圾收集器在函数返回之前不会DECREF.
不仅是内存管理.还要避免使用临时变量来混淆周围的范围.
“无论如何,为什么要在python中创建新作用域?” 你真的不知道吗 为了将变量的存在限制为:a)增强变量的安全重用,以及b)避免编程错误。

2> batbrat..:

在Python中,范围界定有三种类型:全局,本地和类.您可以创建专门的"范围"词典以传递给exec/eval().此外,您可以使用嵌套范围(在另一个范围内定义函数).我发现这些在我的所有代码中都足够了.

正如道格拉斯·莱德已经说过的那样,在其他语言中使用它的主要原因是变量范围,而这在Python中并不存在.另外,Python是我用过的最易读的语言.它会违背可读性,做一些像if-true技巧(你说你想避免的).在这种情况下,我认为最好的办法是将代码重构为多个函数,或者使用单个作用域.我认为Python中的可用范围足以涵盖每个可能的事件,因此本地范围不一定是必要的.

我希望这有帮助.


出于可读性的目的,创建临时变量离开的局部范围正是为了避免污染周围范围.这是一件很棒的事情,遗憾的是它在Python中并不存在.
由于以下原因而被否决:_我认为Python中的可用范围足以覆盖所有可能发生的事情,因此实际上没有必要进行局部范围界定。_为什么在Python中比在其他语言(如C,C#,Java,生锈等?(它们都有创建本地作用域的能力)我认为这个答案很不好,因为它没有考虑足够的情况。特别是想到长方法。正如@Konstantin指出的那样,有时您_want_能够避免污染外部作用域,而Python却没有提供这种功能。
推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有