"local variable 'stringData' referenced before assignment" python 中的错误

"local variable 'stringData' referenced before assignment" error in python

我收到有关变量的这个(恼人的)错误。这是我的代码,我不知道是什么原因造成的,也不知道如何修复它:

stringData = ''
newLine = True

def displayData():
    print(stringData)

def addData(str):
    if newLine and stringData != '':
        stringData += f'\n{str}'
    else:
        stringData += str

它没有为错误提供太多上下文,我找不到如何修复它。

注意,您的变量 str 是保留关键字,不应用作变量名。也就是说,这不是您问题的根源。 下面的代码通过覆盖 stringData 的值来工作。

stringData = ''

newLine = True

def displayData():
    print(stringData)

def addData(my_str,stringData):
    if newLine and stringData != '':
        stringData += f'\n{my_str}'
    else:
        stringData += my_str
    return stringData

stringData = addData('4',stringData)
stringData = addData('3',stringData)
displayData()

你可以使用 class:

class myData:
    def __init__(self):
        self.stringData = ''
        self.newLine = True

    def displayData(self):
        print(self.stringData)

    def addData(self, str):
        if self.newLine and self.stringData != '':
            self.stringData += f'\n{str}'
        else:
            self.stringData += str

然后:

md = myData()
md.addData("Hello")
md.displayData()

OUT : 
Hello

然后:

md.addData("World")
md.displayData()

OUT:
Hello
World