ネストされたクロージャーからローカル変数を変更するにはどうすればよいですか?

clstaudt

次のコード例を検討してください。

def testClosure():
    count = 0

    def increment():
        count += 1

    for i in range(10):
        increment()

    print(count)    

これを呼び出すと、次のようになります。

Traceback (most recent call last):
  File "/Users/cls/workspace/PLPcython/src/sandbox.py", line 23, in <module>
    testClosure()
  File "/Users/cls/workspace/PLPcython/src/sandbox.py", line 18, in testClosure
    increment()
  File "/Users/cls/workspace/PLPcython/src/sandbox.py", line 15, in increment
    count += 1
UnboundLocalError: local variable 'count' referenced before assignment

私はC ++で動作するこのようなコードに慣れています:

void testClosure() {
    int count = 0

    auto increment = [&](){
        count += 1;
    };

    for (int i = 0; i < 10; ++i) {
        increment();
    }

}

私は何が間違っているのですか?内部関数から外部関数のローカル変数を変更することはできませんか?これらの異なるタイプのクロージャ(PythonとC ++)はありますか?

user2555451

あなたがこれをすれば私はそれを動かしました:

def testClosure():
    count = 0

    def increment():
        nonlocal count
        count += 1

    for i in range(10):
        increment()

    print(count)
testClosure()

これはPython3.xでのみ機能することに注意してください。ただし、明らかに使用しているため、問題はありません。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Pythonを使用してネストされたスコープのグローバル変数を変更するにはどうすればよいですか?

分類Dev

index.htmlからインポートされたJavascriptスクリプトからグローバル変数と関数にアクセスし、それらをコンポーネントで使用するにはどうすればよいですか?

分類Dev

構造体への参照を変更するボックス化されたクロージャを作成するにはどうすればよいですか?

分類Dev

変数をクロージャから移動するにはどうすればよいですか?

分類Dev

ストアドプロシージャ内のSELECTから返される値を変更するにはどうすればよいですか?

分類Dev

関数のクロージャから変数にアクセス/変更するにはどうすればよいですか?

分類Dev

MySQL:ストアドプロシージャでselectを使用してローカル変数を設定するにはどうすればよいですか?

分類Dev

動的ローカルホストポートを変更するにはどうすればよいですか?

分類Dev

クロージャーからクロージャーの外側の値を変更するにはどうすればよいですか?

分類Dev

カルマ+ジャスミンを使用してAngular2のローカル変数をテストするにはどうすればよいですか?

分類Dev

カラースクロールオーバーフローインジケーターを変更するにはどうすればよいですか?

分類Dev

このコードを変更してグローバル変数を削除するにはどうすればよいですか?(ネストされたjson再帰ジェネレーターの解凍)

分類Dev

スクロールバーの幅/太さを変更するにはどうすればよいですか?

分類Dev

SharePointからOneDrivefor Businessに同期されたローカルフォルダーの名前を変更するにはどうすればよいですか?

分類Dev

Jenkinsfileに加えられた変更をローカルでテストするにはどうすればよいですか?

分類Dev

これらの3つの変数をローカルストレージに保存するにはどうすればよいですか?

分類Dev

tkinterを使用してネストされた関数でグローバル変数を作成するにはどうすればよいですか?

分類Dev

計算されたクロージャプロパティをSwiftでクロージャに変換するにはどうすればよいですか?

分類Dev

ある関数から別の関数でローカルに定義された変数を使用するにはどうすればよいですか?

分類Dev

mysqlのMySqlストアドプロシージャでループするようにSQLを変更するにはどうすればよいですか?

分類Dev

RustのFnクロージャの内側から変数を変更するにはどうすればよいですか?

分類Dev

ストアドプロシージャ呼び出しからout変数を選択または表示するにはどうすればよいですか?

分類Dev

グローバル変数を変更せずに、グローバル変数の値に割り当てられたローカル変数を変更するにはどうすればよいですか?

分類Dev

ローカルのフォークされたリポジトリを、元のリポジトリに加えられた可能性のある変更と比較するにはどうすればよいですか?

分類Dev

スタックトレースからローカル変数を抽出するにはどうすればよいですか?

分類Dev

NPMモジュールに加えられたローカルの変更を保持するにはどうすればよいですか?

分類Dev

キャプチャした変数をクロージャ内のクロージャに移動するにはどうすればよいですか?

分類Dev

コミットされていない変更として、ブランチからローカルブランチのマスターにプッシュされた変更を取得するにはどうすればよいですか?

分類Dev

エスケープクロージャ内からinoutパラメータを変更するにはどうすればよいですか?

Related 関連記事

  1. 1

    Pythonを使用してネストされたスコープのグローバル変数を変更するにはどうすればよいですか?

  2. 2

    index.htmlからインポートされたJavascriptスクリプトからグローバル変数と関数にアクセスし、それらをコンポーネントで使用するにはどうすればよいですか?

  3. 3

    構造体への参照を変更するボックス化されたクロージャを作成するにはどうすればよいですか?

  4. 4

    変数をクロージャから移動するにはどうすればよいですか?

  5. 5

    ストアドプロシージャ内のSELECTから返される値を変更するにはどうすればよいですか?

  6. 6

    関数のクロージャから変数にアクセス/変更するにはどうすればよいですか?

  7. 7

    MySQL:ストアドプロシージャでselectを使用してローカル変数を設定するにはどうすればよいですか?

  8. 8

    動的ローカルホストポートを変更するにはどうすればよいですか?

  9. 9

    クロージャーからクロージャーの外側の値を変更するにはどうすればよいですか?

  10. 10

    カルマ+ジャスミンを使用してAngular2のローカル変数をテストするにはどうすればよいですか?

  11. 11

    カラースクロールオーバーフローインジケーターを変更するにはどうすればよいですか?

  12. 12

    このコードを変更してグローバル変数を削除するにはどうすればよいですか?(ネストされたjson再帰ジェネレーターの解凍)

  13. 13

    スクロールバーの幅/太さを変更するにはどうすればよいですか?

  14. 14

    SharePointからOneDrivefor Businessに同期されたローカルフォルダーの名前を変更するにはどうすればよいですか?

  15. 15

    Jenkinsfileに加えられた変更をローカルでテストするにはどうすればよいですか?

  16. 16

    これらの3つの変数をローカルストレージに保存するにはどうすればよいですか?

  17. 17

    tkinterを使用してネストされた関数でグローバル変数を作成するにはどうすればよいですか?

  18. 18

    計算されたクロージャプロパティをSwiftでクロージャに変換するにはどうすればよいですか?

  19. 19

    ある関数から別の関数でローカルに定義された変数を使用するにはどうすればよいですか?

  20. 20

    mysqlのMySqlストアドプロシージャでループするようにSQLを変更するにはどうすればよいですか?

  21. 21

    RustのFnクロージャの内側から変数を変更するにはどうすればよいですか?

  22. 22

    ストアドプロシージャ呼び出しからout変数を選択または表示するにはどうすればよいですか?

  23. 23

    グローバル変数を変更せずに、グローバル変数の値に割り当てられたローカル変数を変更するにはどうすればよいですか?

  24. 24

    ローカルのフォークされたリポジトリを、元のリポジトリに加えられた可能性のある変更と比較するにはどうすればよいですか?

  25. 25

    スタックトレースからローカル変数を抽出するにはどうすればよいですか?

  26. 26

    NPMモジュールに加えられたローカルの変更を保持するにはどうすればよいですか?

  27. 27

    キャプチャした変数をクロージャ内のクロージャに移動するにはどうすればよいですか?

  28. 28

    コミットされていない変更として、ブランチからローカルブランチのマスターにプッシュされた変更を取得するにはどうすればよいですか?

  29. 29

    エスケープクロージャ内からinoutパラメータを変更するにはどうすればよいですか?

ホットタグ

アーカイブ