2024-03-28 18:53:07 发布
网友
在许多语言(和地方)中,通过创建类似this的块来创建本地作用域是一种很好的做法。
void foo() { ... Do some stuff ... if(TRUE) { char a; int b; ... Do some more stuff ... } ... Do even more stuff ... }
如何在python中实现这一点,而不出现意外的缩进错误,也不使用某种if True:技巧
Python有两个作用域,本地和全局。函数中使用的变量在本地范围内,无论它们是在什么缩进级别创建的。调用嵌套函数将产生您正在寻找的效果。
def foo(): a = 1 def bar(): b = 2 print a, b #will print "1 2" bar()
仍然像其他人一样,我不得不问你为什么要在函数中创建一个有限的范围。
无论如何,为什么要在python中创建新的作用域?
在其他语言中这样做的正常原因是变量作用域,但在python中不会发生这种情况。
if True: a = 10 print a
在Python中,作用域有三种类型:全局、局部和类。您可以创建专门的“scope”字典以传递给exec/eval()。此外,还可以使用嵌套作用域 (在另一个函数中定义一个函数)。我发现这些在我所有的代码中都足够了。
正如Douglas Leeder已经说过的,在其他语言中使用它的主要原因是变量作用域,而这在Python中并不真正发生。此外,Python是我使用过的最可读的语言。做一些像“如果是真的”的把戏(你说你想避免的)会违背可读性的原则。在这种情况下,我认为最好的办法是将代码重构成多个函数,或者使用单个作用域。我认为Python中可用的作用域足以覆盖所有的事件,因此本地作用域不应该是真正必要的。
我希望这能有帮助。
Python有两个作用域,本地和全局。函数中使用的变量在本地范围内,无论它们是在什么缩进级别创建的。调用嵌套函数将产生您正在寻找的效果。
仍然像其他人一样,我不得不问你为什么要在函数中创建一个有限的范围。
无论如何,为什么要在python中创建新的作用域?
在其他语言中这样做的正常原因是变量作用域,但在python中不会发生这种情况。
在Python中,作用域有三种类型:全局、局部和类。您可以创建专门的“scope”字典以传递给exec/eval()。此外,还可以使用嵌套作用域 (在另一个函数中定义一个函数)。我发现这些在我所有的代码中都足够了。
正如Douglas Leeder已经说过的,在其他语言中使用它的主要原因是变量作用域,而这在Python中并不真正发生。此外,Python是我使用过的最可读的语言。做一些像“如果是真的”的把戏(你说你想避免的)会违背可读性的原则。在这种情况下,我认为最好的办法是将代码重构成多个函数,或者使用单个作用域。我认为Python中可用的作用域足以覆盖所有的事件,因此本地作用域不应该是真正必要的。
我希望这能有帮助。
相关问题 更多 >
编程相关推荐