以下Python代码执行后,输出的结果是?
def create_counter(): count = 0 def counter(): nonlocal count count += 1 return count return counter c1 = create_counter() c2 = create_counter() print(c1(), c1(), c2())
只要在函数体内出现赋值语句,变量就被判定为“局部变量”
也就是说,解释器在编译阶段看到:
count += 1
就等价于:
count = count + 1
于是它认为:
count是counter的 局部变量
但在局部作用域中,count还没被赋值
所以:❌ 报错