在许多语言(和地区)有通过创建类似于块创建本地范围的一个很好的练习本.
void foo()
{
... Do some stuff ...
if(TRUE)
{
char a;
int b;
... Do some more stuff ...
}
... Do even more stuff ...
}
Run Code Online (Sandbox Code Playgroud)
如何在python中实现这一点而不会出现意外的缩进错误,并且不使用某种if True: 技巧
你为什么要在python中创建新的作用域呢?
在其他语言中执行此操作的正常原因是变量作用域,但在python中不会发生这种情况.
if True:
a = 10
print a
Run Code Online (Sandbox Code Playgroud)
在Python中,范围界定有三种类型:全局,本地和类.您可以创建专门的"范围"词典以传递给exec/eval().此外,您可以使用嵌套范围(在另一个范围内定义函数).我发现这些在我的所有代码中都足够了.
正如道格拉斯·莱德已经说过的那样,在其他语言中使用它的主要原因是变量范围,而这在Python中并不存在.另外,Python是我用过的最易读的语言.它会违背可读性,做一些像if-true技巧(你说你想避免的).在这种情况下,我认为最好的办法是将代码重构为多个函数,或者使用单个作用域.我认为Python中的可用范围足以涵盖每个可能的事件,因此本地范围不一定是必要的.
我希望这有帮助.
小智 7
如果您只想创建临时变量并让它们在使用后立即被垃圾收集,您可以使用
del varname
Run Code Online (Sandbox Code Playgroud)
当你不再想要它们的时候。
如果只是为了美观,您可以使用注释或额外的换行符,但不需要额外的缩进。
Python 正好有两个作用域,局部作用域和全局作用域。函数中使用的变量在本地范围内,无论它们是在什么缩进级别创建的。调用嵌套函数将产生您正在寻找的效果。
def foo():
a = 1
def bar():
b = 2
print a, b #will print "1 2"
bar()
Run Code Online (Sandbox Code Playgroud)
仍然像其他人一样,我不得不问你为什么要在函数内创建一个有限的作用域。