Python 的 for 和 while 循环为什么没有引入新的作用域?
时间: 2020-08-21来源:V2EX
前景提要
C 家族的编程语言,基本都会为 for 和 while 循环引入新的作用域,以保证循环里定义的局部变量不会污染外部作用域。 for (int i = 0; i < 10; i++) { printf("%d\n", i); } // 无法再访问 i
但 Python 不是这样,for 和 while 循环内的局部变量会在循环后继续保留,依然可以被访问。也就是说,for 和 while 循环没有引入新的作用域。 for i in range(10): print(i) print(i) # 可以访问,i=9
很明显,这样的做法会造成很多不必要的错误,比如循环内的变量遮盖了外部作用域的变量,循环结束后使用了被循环污染的变量等。
Python2 有这样的问题可以归结为历史原因,Python3 为什么也继承了这个问题?

科技资讯:

科技学院:

科技百科:

科技书籍:

网站大全:

软件大全:

热门排行