さて、私は変数がローカルに設定されたが、その関数の外側が古い自己(この場合はNone)に戻ったというこの本当に厄介な問題を抱えていましたが、同時に他の変数を操作することができ、それでも使用せずにできます「グローバル」キーワード。
このための実際のコードを提供することはできませんが、次のようになります。
foo = {}
foo_foo = {}
bar = None
def changes_foo():
...do some stuff to foo...
class EditThread(threading.Thread):
def __init__(self):
setup()
def run(self):
for key, value in foo.items():
do_update_task(key, value)
def do_update_task(self, key, value):
...do some editing too foo...
del foo[key]
bar = [key, value]
foo_foo[key] = value
def print_the_bar():
print bar
上のすべての操作は正常foo
にfoo_foo
機能しますが、を呼び出すとbarはNoneのままprint_the_bar
であり、コード内に多くのprintステートメントがあり、内部のbarがdo_update_task
実際に正しい値であり、Noneではないことを確認しています。
なぜそうなのか説明してもらえますか?