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