为什么解释器将变量i称为局部变量

时间:2019-05-11 18:40:03

标签: python-3.x

stack = []
i=0
def push(val):
    stack.append(val)
    i+=1

def popout():
    del stack[i-1]

def maximum ():
    print(f"{i} elements present")


push(3)
push(4)
maximum()

在python解释器中它说:

  

UnboundLocalError:在分配之前先引用了本地变量

我在全球宣布自己的位置

2 个答案:

答案 0 :(得分:3)

如果您为函数中的变量赋值,则Python会假定它是局部变量。

如果您不想这样做,请在函数中添加global i

def push(val):
    global i
    stack.append(val)
    i+=1

也就是说,这几乎总是一个坏主意。

答案 1 :(得分:0)

i+=1分配在i函数内创建了一个新的局部变量push

如果要使用全局变量i,请使用global关键字。

def push(val):
    global i
    stack.append(val)
    i+=1