遇到一个奇怪的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定义的作用域不一致。