我试过看过几个不同的例子,但我不确定为什么这不起作用。说我有这样的代码:Python方法中的执行顺序
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循环。
但是,当我运行代码时,我被告知局部变量计数在赋值之前被引用。为什么会发生?
编辑(解释一些我已经写在注释中的东西):
这不工作(虽然我认为这是因为全球采用错在这里):
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
到目前为止,我得到它的唯一办法是使用上面提供的链接,这是对待th Ë算作一个列表,像这样:
def loadVariables():
global count
count = [0]
def main():
loadVariables():
rest of code etc
count[0] += 1
有没有变量称为'任何地方count'一个简单的例子。我认为你误解了“全球化”的运作方式。 –
@PhillipCloud不,那部分工作正常。 'loadVariable'创建一个全局变量'count','loadDictionary'创建一个全局变量'myDict'。 – delnan