いくつかの異なる例を見てみましたが、なぜこれが機能しないのかよくわかりません。次のようなコードがあるとします。
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()
私の目には、main() メソッドを開始する if ステートメントが実行されます。次に、グローバルな変数が読み込まれ、辞書が読み込まれ、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
これまでのところ、私がそれを機能させる唯一の方法は、上記のリンクを使用することです。これは、次のようにカウントをリストとして扱うことです。
def loadVariables():
global count
count = [0]
def main():
loadVariables():
rest of code etc
count[0] += 1