我试过看几个不同的例子,但我不确定为什么这不起作用。假设我有一些这样的代码:
def loadVariable():
global count
count = 0
def loadDictionary():
location = 'some location'
global myDict
myDict = pickle.load(open(location, 'rb'))
def main():
loadVariable()
loadDictionary()
for item in myDict:
if item.startswith("rt"):
count += 1
item = item[3:]
if __name__ == '__main__':
main()
在我看来,执行 if 语句会启动 main() 方法。然后,加载全局变量,加载字典并执行 for 循环。
但是,当我运行代码时,我被告知在分配之前引用了局部变量 count。为什么会这样?
编辑(解释我在评论中写的一些东西):
这不起作用(尽管我认为这是因为 global 在这里使用错误):
global count
def loadVariables()
count = 0
def main():
loadVariables()
rest of code etc
这也不起作用:
def loadVariables()
count = 0
def main():
global count
loadVariables()
rest of code etc
到目前为止,我让它工作的唯一方法是使用上面提供的链接,即将计数视为一个列表,如下所示:
def loadVariables():
global count
count = [0]
def main():
loadVariables():
rest of code etc
count[0] += 1