メソッド内の関数内のグローバル変数を更新します

タド

私はこのようなクラスのメソッド内に関数を持っています:

class A():               
    def run(self):

        exit=False

        def walk():
             global exit
             #DoStuff - change exit variable
        walk()
        print(exit)

これで、関数walkexit変数を変更する必要があります。しかし、この変数は常にFalse以前に設定されたように関数の外にありますこの関数がこの変数をに設定した場合、関数の外部でこれにアクセスするためのフラグとして使用してこの変数を変更するにはどうすればよいTrueですか?私はこの変数の範囲についてかなり混乱しています。私はPython3.6を使用しています。

timgeb

現在の設定

class A:
    def run(self):
        exit = False

        def walk():
             global exit
             exit = True
        walk()
        print(exit)

a = A()
a.run() # False
print(exit) # True

版画Falseのでexit、あなたが内部の印刷runの範囲で生活をrun、それがグローバル変数ではありません。あなたは実際にグローバル変数exit設定していますwalk-をprint与えるための2番目の呼び出しを参照してくださいTrue

代わりに必要なのglobalは、nonlocal自由変数を変更できるキーワードです。globalただし、最初に何が起こるかを調べてみましょう

class A:
    def run(self):
        exit = False

        def walk():
             exit = True
        walk()
        print(exit)

a = A()
a.run() # False

割り当てられたローカル変数の作成を気にしないFalseため、コードは出力runされwalkます。nonlocalしかしの追加で

class A:
    def run(self):
        exit = False

        def walk():
             nonlocal exit
             exit = True
        walk()
        print(exit)

a = A()
a.run() # True

囲む非ローカルスコープに変数設定しているTrueため、コードはを出力exit = Trueしますexitrun

追加のコンテキストについて調査する必要がある重要なトピックは、クロージャと自由変数です。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

Pythonスレッドは関数内のグローバル変数を変更しません

分類Dev

qkdbの関数内でグローバル変数を定義します

分類Dev

Pythonは関数内のグローバル変数を改訂します

分類Dev

JavaScript:関数内のグローバル変数を初期化します

分類Dev

クラス内のグローバル変数のクラス内のメソッドへの呼び出しを理解する際の問題

分類Dev

Pythonは、関数内の関数に対してのみグローバル変数を共有します

分類Dev

メソッド定義内で$ 1、$ 2などのグローバル変数を使用する

分類Dev

PHPは他の関数内の関数内のグローバル変数にアクセスします

分類Dev

メソッド内のローカル変数を変更します。メソッドが実行されても、変数は変更されません。

分類Dev

非同期関数内またはpromise内でグローバル変数の値を設定しますか?

分類Dev

更新されたグローバルクラス変数をあるメソッドから別のメソッドにどのように渡しますか?

分類Dev

Ruby-メソッド内からグローバル変数を作成する

分類Dev

jquery.getメソッド内でグローバル変数を宣言する

分類Dev

パラメータを使用して関数内のグローバル変数を変更する方法

分類Dev

メソッド内のローカル変数の数を取得する

分類Dev

メソッド/関数内でのローカル変数の割り当て

分類Dev

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

分類Dev

Python関数内のすべてのグローバル変数を検出しますか?

分類Dev

メソッド内のグローバル変数にアクセスできません

分類Dev

ロード関数内の変数を取得します

分類Dev

グローバル変数と内側の関数からヌル文字列を取得します

分類Dev

Rスコープ:関数内のグローバル変数を禁止します

分類Dev

関数内のifステートメントの条件でグローバル変数が使用されると、PythonはUnboundLocalErrorをスローします

分類Dev

関数JavaScript内のメソッドに変数を渡す方法

分類Dev

関数内のグローバル変数の値を変更する方法

分類Dev

深さに関係なく、関数内のグローバルネストリスト変数を更新します

分類Dev

Pythonサーバーの関数内の変数を更新します

分類Dev

関数内のグローバル変数を変更できません(Javascript)

分類Dev

関数内のグローバル変数を変更できません

Related 関連記事

  1. 1

    Pythonスレッドは関数内のグローバル変数を変更しません

  2. 2

    qkdbの関数内でグローバル変数を定義します

  3. 3

    Pythonは関数内のグローバル変数を改訂します

  4. 4

    JavaScript:関数内のグローバル変数を初期化します

  5. 5

    クラス内のグローバル変数のクラス内のメソッドへの呼び出しを理解する際の問題

  6. 6

    Pythonは、関数内の関数に対してのみグローバル変数を共有します

  7. 7

    メソッド定義内で$ 1、$ 2などのグローバル変数を使用する

  8. 8

    PHPは他の関数内の関数内のグローバル変数にアクセスします

  9. 9

    メソッド内のローカル変数を変更します。メソッドが実行されても、変数は変更されません。

  10. 10

    非同期関数内またはpromise内でグローバル変数の値を設定しますか?

  11. 11

    更新されたグローバルクラス変数をあるメソッドから別のメソッドにどのように渡しますか?

  12. 12

    Ruby-メソッド内からグローバル変数を作成する

  13. 13

    jquery.getメソッド内でグローバル変数を宣言する

  14. 14

    パラメータを使用して関数内のグローバル変数を変更する方法

  15. 15

    メソッド内のローカル変数の数を取得する

  16. 16

    メソッド/関数内でのローカル変数の割り当て

  17. 17

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

  18. 18

    Python関数内のすべてのグローバル変数を検出しますか?

  19. 19

    メソッド内のグローバル変数にアクセスできません

  20. 20

    ロード関数内の変数を取得します

  21. 21

    グローバル変数と内側の関数からヌル文字列を取得します

  22. 22

    Rスコープ:関数内のグローバル変数を禁止します

  23. 23

    関数内のifステートメントの条件でグローバル変数が使用されると、PythonはUnboundLocalErrorをスローします

  24. 24

    関数JavaScript内のメソッドに変数を渡す方法

  25. 25

    関数内のグローバル変数の値を変更する方法

  26. 26

    深さに関係なく、関数内のグローバルネストリスト変数を更新します

  27. 27

    Pythonサーバーの関数内の変数を更新します

  28. 28

    関数内のグローバル変数を変更できません(Javascript)

  29. 29

    関数内のグローバル変数を変更できません

ホットタグ

アーカイブ