循环作用域结束后自动销毁变量

2024-06-28 20:22:59 发布

您现在位置:Python中文网/ 问答频道 /正文

与其他语言(如c)不同,c++将变量的作用域保留在循环中。例如

for(int i=0; i<5; i++)
{
    do stuff;
}

i+=1  // raises error as i is not initialised.

在python中使用相同的代码

for i in range(5)
    do stuff

i+=1  # doesn't raise error as i is initialised.

尽管这有时会很有帮助,但有时会很痛苦,因为我很少在循环后的代码中再次使用变量名,比如i, key, value,而不会遇到任何显式错误。你知道吗

有没有比在循环之后使用del i更具python风格的方法来避免上述问题?你知道吗

编辑:这个问题已被标记为重复的Short description of the scoping rules?我看到了很多年前。这个线程描述了python中的作用域是如何工作的,而我的问题则完全不同。请将此取消标记为副本。你知道吗


Tags: 代码in标记语言forisasnot
1条回答
网友
1楼 · 发布于 2024-06-28 20:22:59

在Python3中,列表理解可能是一个答案。。。?你知道吗

[print(i) for i in range(5)]
print(i)

>> 0
1
2
3
4

                                     -
NameError Traceback (most recent call last)
<ipython-input-1-598b4fd0c0c5> in <module>()
1 [print(i) for i in range(5)]
  > 2 print(i)

NameError: name 'i' is not defined

相关问题 更多 >