python - for...in 中的局部变量, 为何能在外面使用?
本文介绍了python - for...in 中的局部变量, 为何能在外面使用?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
2016/11/20
问题
详情见代码
Python 作为高级语言, 抽象层次很高, 然一个程序员一般都会好几门语言, 有时候会在语言的细节处, 发生概念性的混淆
有点害怕, 是不是一直误解了 Python 的作用域原理?
正确的作用域原理是什么?
答案: LEGB法则
初学 Python 语法的时候, 由于觉得这东西太复杂, 就快速跳过了, 没想到是个坑( maybe feature ? )
相关代码
def find(sequence, target):
for index, value in enumerate(sequence):
if value == target:
break
else:
return -1
return index # ?? 这里是否可表示 index 已经逃离 for...in 作用域了?
print find(range(10), 1)
for iii in range(10):
iii += 1
print iii
一直以为是这样的
for (int i=0; i<10; ++i)
do something # i的作用域在 for 中
重现
拷贝代码, 运行
尝试解决
搜索了 Python 作用域的相关介绍
解决方案
这个有点像javascript中的var
在js中
for(var i = 0; i < 100; i++){
//内容
}
console.log(i);//i = 100
因为js中var
定义的变量的作用域是整个函数,所以ES6语法中增加了一个let
,let
定义的变量就是块级作用域
如果是for(let i = 0; i < 100; i++)
,后面再log i的话就是undefined
了
如果是java的话,也是块级作用域
for(int i = 0; i < 100; i ++){
//i在块级作用域范围内
}
你的代码就是java这种
这篇关于python - for...in 中的局部变量, 为何能在外面使用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文