Pythonはローカルスコープでグローバル変数を宣言できますか?
できます:
def main():
# do some... for files varible
for file in files:
result = func(file)
print result
理解できません。なぜループresultの外に見えるのか誰かが教えてくれます。for
ありがとうございます。
forステートメントは新しいスコープを開始しません。モジュール、クラス宣言、および関数定義のみが新しいスコープを開始します。
グローバル変数宣言が表示されません。resultはローカル変数であり、ですfile。あなたは話しているのfilesですか?これはグローバル変数のように見えますが、ローカルで宣言されているようには見えません。
@DSMの有益なコメントに基づいて更新:
result-loop内でローカルに宣言されていると話している場合for、Pythonではそのようには機能せず、for-loopはローカルスコープを作成しません。
関数が代入=または正規化された代入(つまり+=)を使用する場合、変数はlocalデフォルトで考慮されます。ただし、割り当てを行う場合は、キーワードglobalを使用します。global
foo = 2
def bar():
foo = 3 # foo is locally defined here
def car():
global foo
foo = 4 # foo is globally reassigned here
bar() # foo is still 2
car() # foo is now 4