prev, prev_re = '', (None) # these are globals
def find(h, p='', re=None):
print h, p, re
#global prev, prev_re
if p == '' and prev == h: return prev_re
prev, prev_re = h, re
return re
print find ("abc")
导致此错误:
if p == '' and prev == h: return prev_re
UnboundLocalError: local variable 'prev' referenced before assignment
$
但如果我评论前最后一行find
,
prev, prev_re = '', (None)
def find(h, p='', re=None):
print h, p, re
#global prev, prev_re
if p == '' and prev == h: return prev_re
#prev, prev_re = h, re
return re
print find ("abc")
代码按预期正确运行,没有错误。
我的问题是为什么在第一种情况下它没有找到全局变量 prev
,为什么在第二种情况下它确实在if
-condition 中找到了全局变量?
编辑:请帮助我了解环境结构的详细信息,以了解解释器为什么找不到变量。