【python】for循环内定义变量作用域的坑

作者在调试代码时遇到一个关于变量作用域的bug,发现了一个Python的特性,即在嵌套循环中,变量`realSize`的作用域超出预期地延伸到了外层。这启示开发者要注意Python与其他语言不同的作用域规则,尤其是对递归和变量作用域的理解。
摘要由CSDN通过智能技术生成

遇到一个奇怪的bug,刚发现的时候,我下意识认为是数据没给对,然后核对了一遍数据,再跑一次bug还在。
很快定位到了出问题的模块,该模块有多个循环

for x in xlist:
	realSize	=	getSize(x)
	funtion(x, realSize)
for y in ylist:
	funtion1(y, k, realSize)

因为后一个循环是从前一个循环复制修改的,没有定义realSize,按道理运行时会报错的,realSize是在前一个循环内定义的,我一直以为它的作用域是只在循环内,所以之后还要用到的变量,我都在循环前定义了,但万万没想到,它的作用域覆盖了循环外。
也就是python之父考虑了for循环后,变量还需要再次用到的问题,于是把它的作用域延申到了循环外,恰好我又不是从0开始学的python,没有意识到这个问题,于是发生了我以为的作用域,跟python定义的作用域不一致。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值