在函数内为变量添加+1

时间:2013-09-19 11:31:35

标签: python function python-2.7

所以基本上我不知道这段小代码有什么问题,似乎我找不到让它工作的方法。

points = 0

def test():
    addpoint = raw_input ("type ""add"" to add a point")
    if addpoint == "add":
        points = points + 1
    else:
        print "asd"
    return;
test()

我得到的错误是:

UnboundLocalError: local variable 'points' referenced before assignment

注意:我不能在函数中放置“points = 0”,因为我会重复多次,所以它总是先将点设置回0。 我完全陷入困境,任何帮助都会受到赞赏!

3 个答案:

答案 0 :(得分:16)

points不在函数范围内。您可以使用nonlocal

获取对变量的引用
points = 0
def test():
    nonlocal points
    points += 1

如果points内的test()应引用最外层(模块)范围,请使用global

points = 0
def test():
    global points
    points += 1

答案 1 :(得分:4)

你也可以将点传递给函数: 小例子:

def test(points):
    addpoint = raw_input ("type ""add"" to add a point")
    if addpoint == "add":
        points = points + 1
    else:
        print "asd"
    return points;
if __name__ == '__main__':
    points = 0
    for i in range(10):
        points = test(points)
        print points

答案 2 :(得分:0)

将点移动到测试中:

def test():
    points = 0
    addpoint = raw_input ("type ""add"" to add a point")
    ...

或使用global statement,但这是不好的做法。 但更好的方法是将点移动到参数:

def test(points=0):
    addpoint = raw_input ("type ""add"" to add a point")
    ...