forループ内でそれ自体(関数)を呼び出し、ローカル変数を変更します

PuffedRiceCrackers
def findPair(students, Robert):
    #...
        if len(students) == 2:
            #do something
            return
        else:
            for friend in friendsOfRobert:
                print(students)
                leftStudents = removePairFromStudents(students, friend, Robert)
                if len(leftStudents) != 0:
                    findPair(leftStudents, leftStudents[0])
            return

studentsループするので、なぜ変更されるのかよくわかりませんforそれはグローバル変数でさえありません。以下は、コードの構造を理解するのに役立つだけです。

  1. ...パート:friendsOfRobertから見つけるstudents
  2. forループ

    (1)1つfriend想定しRobertペアになりました。

    (2) leftStudent取り外しfriendRobertからstudents

    (3)リピートfindPairなしのが、今回friendRobert次の同等物Robertはランダムに選択されます(leftStudents[0]

ちなみに、以前に削除したペアを記憶studentsし、次のループに入る前に毎回(以下のコードで)元のセットを再構築することで、問題を解決しました

if len(students) == 2:
    if len(justPaired) != 0:
        students.append(justPaired[0])
        students.append(justPaired[1])
    # do something
    return

編集:不要な例を削除

blue_note

関数引数のコピーを取得しません彼らは引数への参照のコピーを取得します。だから、あなたが書くとき

 f(x):
     x.append(3)
     x = [2,4,5]


 y = [1, 2]
 f(y)

この行は渡されx.append(3)実際のリストに影響しx = [2, 4, 6]ますが、参照のコピーを引数に再割り当てするため、この行は効果がありません。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

ネストされた関数呼び出しでの変数の割り当てにより、呼び出し元のスコープ内のローカル変数が予期せず変更されます

分類Dev

変数を使用してループ内でaddEventListenerを呼び出します

分類Dev

関数内のローカル変数は初期化されず、以前の関数呼び出しを記憶します

分類Dev

パンダのループ内でローカル変数を呼び出す

分類Dev

関数のローカル変数を呼び出し元の環境にバインドできますか?

分類Dev

PHP関数呼び出し内の変数参照をループする

分類Dev

pyaudioは、コールバック関数を呼び出すサンプルの数を変更します

分類Dev

関数が呼び出されるたびにJavascriptのローカル変数を変更する

分類Dev

複数回呼び出した後、内部関数の非ローカル変数を変更した結果

分類Dev

ローカル変数によって参照されるサービスですが、関数呼び出し間で値を保持します

分類Dev

Pythonで関数をループしますが、関数の配列から関数が呼び出されたときに変数を再定義します

分類Dev

再帰的に呼び出されるLotusscript関数では、ローカル変数は独立していますか?

分類Dev

呼び出されない関数内のC ++変数宣言は、通常のアプリケーションフローを変更します

分類Dev

javascriptグローバル変数を使用した別の関数内での関数呼び出し

分類Dev

変数を関数呼び出しのプレースホルダーとして使用できますか?

分類Dev

evalなしで名前でローカル変数を呼び出す

分類Dev

VueRouterは、Vue.beforeCreate関数を呼び出す前でもルートを変更しています

分類Dev

関数内のグローバル変数を更新して、関数外で呼び出すことができません(jQuery)

分類Dev

変数の変更を使用してローカルストレージを呼び出す

分類Dev

forループ内の関数呼び出しはループを中断します

分類Dev

forループ関数で変数名を文字列として呼び出す

分類Dev

宣言されている関数を呼び出さずにローカル静的変数を変更するにはどうすればよいですか?

分類Dev

Firebase関数シェルからローカル構成変数を参照するfirebase関数の呼び出し中にエラーが発生しました

分類Dev

関数を介してグローバル変数を呼び出すOpenMP

分類Dev

ノードJSは、module.exports内で「ローカル」関数を呼び出します。

分類Dev

グローバル関数方式でローカル関数を呼び出しますか?

分類Dev

サブモジュール自体を変更せずに、呼び出されたサブモジュールのグローバル変数が変更されないようにしますか?

分類Dev

ループ内でsetTimeout関数を呼び出すと機能しません

分類Dev

以前に定義された変数をループ内で番号で呼び出している変数

Related 関連記事

  1. 1

    ネストされた関数呼び出しでの変数の割り当てにより、呼び出し元のスコープ内のローカル変数が予期せず変更されます

  2. 2

    変数を使用してループ内でaddEventListenerを呼び出します

  3. 3

    関数内のローカル変数は初期化されず、以前の関数呼び出しを記憶します

  4. 4

    パンダのループ内でローカル変数を呼び出す

  5. 5

    関数のローカル変数を呼び出し元の環境にバインドできますか?

  6. 6

    PHP関数呼び出し内の変数参照をループする

  7. 7

    pyaudioは、コールバック関数を呼び出すサンプルの数を変更します

  8. 8

    関数が呼び出されるたびにJavascriptのローカル変数を変更する

  9. 9

    複数回呼び出した後、内部関数の非ローカル変数を変更した結果

  10. 10

    ローカル変数によって参照されるサービスですが、関数呼び出し間で値を保持します

  11. 11

    Pythonで関数をループしますが、関数の配列から関数が呼び出されたときに変数を再定義します

  12. 12

    再帰的に呼び出されるLotusscript関数では、ローカル変数は独立していますか?

  13. 13

    呼び出されない関数内のC ++変数宣言は、通常のアプリケーションフローを変更します

  14. 14

    javascriptグローバル変数を使用した別の関数内での関数呼び出し

  15. 15

    変数を関数呼び出しのプレースホルダーとして使用できますか?

  16. 16

    evalなしで名前でローカル変数を呼び出す

  17. 17

    VueRouterは、Vue.beforeCreate関数を呼び出す前でもルートを変更しています

  18. 18

    関数内のグローバル変数を更新して、関数外で呼び出すことができません(jQuery)

  19. 19

    変数の変更を使用してローカルストレージを呼び出す

  20. 20

    forループ内の関数呼び出しはループを中断します

  21. 21

    forループ関数で変数名を文字列として呼び出す

  22. 22

    宣言されている関数を呼び出さずにローカル静的変数を変更するにはどうすればよいですか?

  23. 23

    Firebase関数シェルからローカル構成変数を参照するfirebase関数の呼び出し中にエラーが発生しました

  24. 24

    関数を介してグローバル変数を呼び出すOpenMP

  25. 25

    ノードJSは、module.exports内で「ローカル」関数を呼び出します。

  26. 26

    グローバル関数方式でローカル関数を呼び出しますか?

  27. 27

    サブモジュール自体を変更せずに、呼び出されたサブモジュールのグローバル変数が変更されないようにしますか?

  28. 28

    ループ内でsetTimeout関数を呼び出すと機能しません

  29. 29

    以前に定義された変数をループ内で番号で呼び出している変数

ホットタグ

アーカイブ