問題タブ [python-nonlocal]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Pythonの非ローカルステートメント
Pythonnonlocal
ステートメントは何をしますか(Python 3.0以降)?
Pythonの公式Webサイトにはドキュメントがなく、help("nonlocal")
機能しません。
python - Python 2.x の非ローカル キーワード
Python 2.6 でクロージャを実装しようとしていて、非ローカル変数にアクセスする必要がありますが、このキーワードは Python 2.x では使用できないようです。これらのバージョンの Python では、クロージャの非ローカル変数にどのようにアクセスすればよいですか?
python - クロージャ(python 2.6)内の外部関数変数にアクセスするにはどうすればよいですか?
ウィキペディアから
Python3.xの「nonlocal」キーワードを使用するのと同様の方法で外部関数変数にアクセスする必要があります。Python 2.6でそれを行う方法はありますか?(必ずしも非ローカルキーワードを使用する必要はありません)
python - Python、親スコープの変数の値を変更するにはどうすればよいですか?
例: asginment ステートメントは、新しいローカル変数を宣言します。
グローバル宣言を使用すると、グローバルで foo が使用されます。
func1スコープで変数fooを変更するにはどうすればよいですか?
助けてくれてありがとう。
編集:
Brandon Craig Rhodes さん、ありがとうございます。ようやく意味がわかりました。
ネストされたスコープが 3 つ以上ある場合は、変数をリストに格納できます。
実際にはグローバル変数を使用するだけです。
したがって、ネストされた2つの関数がある場合、使用できます
と
ネストされた関数が 3 つ以上あり
、各関数が他の関数スコープで変数を使用している場合
、グローバル リスト変数を宣言しないのはなぜですか?
ご協力ありがとうございました!!!
python - クラス定義の Python 非ローカル ステートメント
Python 3 ソース コードでスコープの分析を実行しようとしていますが、非ローカル ステートメント ステートメントがクラス定義内でどのように機能するかについて悩んでいます。
私が理解しているように、クラス定義はその本体を新しい名前空間内で実行し(dictと呼びます)、クラス名をタイプ(name、bases、dict)の結果にバインドします。非ローカル x は、外側の非ローカル スコープのどこかにバインドされている変数を参照している限り、機能するはずです。
これから、次のコードがコンパイルされて実行されることを期待しています。
しかし、これは失敗します
次のコードは完全に実行されますが
関数定義のクロージャとクラス定義の違いを説明できる人はいますか?
python - Python での内部関数の再利用
Python 3 関数 (非ローカル変数を使用) を複数の他の関数内で、もう一度定義せずに使用する方法を理解しようとしています。これが私が意味することの非常に単純化された例です:
エラー ( SyntaxError: No binding for nonlocal 'var' found
) が表示されますが、これは非常に間違っていると思われます。inner()
決して単独行動をするつもりはありません。inner()
正しい方法で再利用するにはどうすればよいですか?内部outer1()
で定義してから再利用することはできませんouter2()
よね?
わかりました、ええと...一般的な要求により...これが私のコードの関連セクションです...
python - nonlocals() はどこにありますか?
現在のスコープの非ローカル変数を取得するにはどうすればよいですか? vars
、locals
、の関数globals
は存在しますが、 を取得する関数はありnonlocals
ますか?
を呼び出すときに非ローカルがリストされないのはなぜvars
ですか?
アップデート
私の問題は、現在のスコープで使用可能な変数を列挙する方法がないことです。非ローカル AFAICT が含まれていないvars
か含まれていません。globals
vars
次のようなコードでよく使用します。
これらの変数のいずれかが含まれている関数のスコープ内にある場合、これは失敗します。
python - Python <3に「nonlocal」のようなものはありますか?
私はこのようなコードを手に入れました:
foo
最も外側のスコープで定義したのは醜いので、outer
機能しているだけにしておきたいと思います。私が正しく理解しているように、Python3ではこれはによって行われnonlocal
ます。私が欲しいもののためのより良い方法はありますか?私は宣言して割り当てfoo
、そして多分それをouter
デルケアしたいと思います:global
inner
(A)動作せずfoo
、最も外側のスコープで検索されているようです。
python - python nonlocal に相当する Ruby
Rubyでクロージャを書こうとしています。これは Python で書かれたコードです:
インクリメント内から変数 x にアクセスして変更できるように、Ruby に「非ローカル」に相当するものはありますか?
python - Pythonの非ローカルステートメントの構文エラー
この質問の回答で指定されている非ローカルステートメントの使用例をテストしたいと思います。
しかし、このコードを読み込もうとすると、常に構文エラーが発生します。
ここで私が間違っていることを誰かが知っていますか(私が使用するすべての例で、を含む構文エラーが発生しますnonlocal
)。