0

Pythonはローカルスコープでグローバル変数を宣言できますか?

できます:

def main():
    # do some... for files varible
    for file in files:
       result = func(file)
    print result

理解できません。なぜループresultの外に見えるのか誰かが教えてくれます。for

ありがとうございます。

4

3 に答える 3

6

forステートメントは新しいスコープを開始しません。モジュール、クラス宣言、および関数定義のみが新しいスコープを開始します。

于 2012-08-19T01:28:23.893 に答える
1

グローバル変数宣言が表示されません。resultはローカル変数であり、ですfile。あなたは話しているのfilesですか?これはグローバル変数のように見えますが、ローカルで宣言されているようには見えません。

@DSMの有益なコメントに基づいて更新:

result-loop内でローカルに宣言されていると話している場合for、Pythonではそのようには機能せず、for-loopはローカルスコープを作成しません。

于 2012-08-19T01:27:47.187 に答える
0

関数が代入=または正規化された代入(つまり+=)を使用する場合、変数は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
于 2012-08-19T01:28:49.437 に答える