代码如下:
a = "a"
def foo(c):
# global a
if c >5:
a = "b"
print(a)
foo(1)
执行结果
UnboundLocalError: local variable 'a' referenced before assignment
函数外有全局变量a,当传入1时,判断条件触发,不满足条件,执行出错,加上 global执行没错,传入大于5的时后执行没错,猜测是有尝试重新声明a的情况,虽然没有触发但是导致命名冲突,且并没有赋值成功。
参考链接: link.