Python代码:
for i in xrange(10):
for j in xrange(5):
pass
# The for-loop ends, but i,j still live on
print i,j # 9, 4
Run Code Online (Sandbox Code Playgroud)
C代码:
for(int i=0; i<=10; i++)
for(int =0; j<=5; j++)
;
// The for-loop ends, so i,j can't be accessed, right?
printf("%d, %d", i, j); // won't compile
Run Code Online (Sandbox Code Playgroud)
那么,即使在for循环结束后,Python中的变量仍将继续存在?
只有函数,模块和类定义的主体在Python中描述了范围.其他控制结构则没有.
有关此内容的一些基本信息,请参阅Python教程的Classes页面的Python Scopes和Namespaces部分.一个重要的部分:
尽管范围是静态确定的,但它们是动态使用的.在执行期间的任何时候,至少有三个嵌套的作用域,其名称空间可以直接访问:
- 最先搜索的最内层作用域包含本地名称
- 从最近的封闭范围开始搜索的任何封闭函数的范围包含非本地名称,但也包括非全局名称
- 倒数第二个范围包含当前模块的全局名称
- 最外面的范围(最后搜索)是包含内置名称的命名空间
| 归档时间: |
|
| 查看次数: |
188 次 |
| 最近记录: |