关于python:UnboundLocalError:赋值前引用的局部变量’count’

UnboundLocalError: local variable 'count' referenced before assignment

在"count+=1"处引发错误。我试着让它成为一个全球性的等等,但它仍然给出了一个问题。这更像是一个笑话,但我想知道为什么它不起作用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import math
def delT():
    #inputs
    #float inputs
    #do math
    #print results
    global count
    count=0
    def getAndValidateNext():
        #print menu
        getNext=input("select something")
        acceptNext=["things","that","work"]
        while getNext not in acceptNext:
            count+=1
            print("Not a listed option.")
            if count==5:
                print("get good.")
                return
            return(getAndVadlidateNext())
        if getNext in nextRestart:
            print()
            return(delT())
        if getNext in nextExit:
            return
    getAndVadlidateNext()
delT()


global count应该在getAndValidateInput()函数内部。


您需要将您的global关键字向下移动到您的函数中。

1
2
3
4
5
count=0
def getAndValidateInput():
    global count
    #print menu
    #So on and so forth

现在您应该能够访问您的count变量了。它与Python中的作用域有关。必须在要在其中使用变量的每个函数中声明变量是全局变量,而不仅仅是在定义变量的位置。


我曾经遇到过同样的问题,结果发现这与范围有关,并且在另一个函数定义中有一个函数定义。工作原理是编写单独的函数来创建和修改全局变量。例如:

1
2
3
4
5
6
def setcount(x):
    global count
    count = x
def upcount():
    global count
    count += 1