首页 > 解决方案 > 循环范围结束后自动销毁变量

问题描述

与其他语言(如 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在循环后的代码中再次使用变量名,而不会遇到任何明确的错误。

有没有比在循环之后使用更 Pythonic 的方式del i来避免上述问题?

编辑:这个问题已被标记为范围规则的简短描述的重复?我很久以前就看过了。该线程描述了作用域在 python 中的工作方式,而我的问题完全不同。请取消将此标记为重复项。

标签: python

解决方案


在 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

推荐阅读