問題タブ [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.

0 投票する
9 に答える
143440 参照

python - Pythonの非ローカルステートメント

Pythonnonlocalステートメントは何をしますか(Python 3.0以降)?

Pythonの公式Webサイトにはドキュメントがなく、help("nonlocal")機能しません。

0 投票する
10 に答える
44672 参照

python - Python 2.x の非ローカル キーワード

Python 2.6 でクロージャを実装しようとしていて、非ローカル変数にアクセスする必要がありますが、このキーワードは Python 2.x では使用できないようです。これらのバージョンの Python では、クロージャの非ローカル変数にどのようにアクセスすればよいですか?

0 投票する
1 に答える
379 参照

python - クロージャ(python 2.6)内の外部関数変数にアクセスするにはどうすればよいですか?

ウィキペディアから

Python3.xの「nonlocal」キーワードを使用するのと同様の方法で外部関数変数にアクセスする必要があります。Python 2.6でそれを行う方法はありますか?(必ずしも非ローカルキーワードを使用する必要はありません)

0 投票する
2 に答える
5631 参照

python - Python、親スコープの変数の値を変更するにはどうすればよいですか?

例: asginment ステートメントは、新しいローカル変数を宣言します。

グローバル宣言を使用すると、グローバルで foo が使用されます。

func1スコープで変数fooを変更するにはどうすればよいですか?
助けてくれてありがとう。

編集:

Brandon Craig Rhodes さん、ありがとうございます。ようやく意味がわかりました。

ネストされたスコープが 3 つ以上ある場合は、変数をリストに格納できます。

実際にはグローバル変数を使用するだけです。


したがって、ネストされた2つの関数がある場合、使用できます

ネストされた関数が 3 つ以上あり
、各関数が他の関数スコープで変数を使用している場合
、グローバル リスト変数を宣言しないのはなぜですか?
ご協力ありがとうございました!!!

0 投票する
2 に答える
4975 参照

python - クラス定義の Python 非ローカル ステートメント

Python 3 ソース コードでスコープの分析を実行しようとしていますが、非ローカル ステートメント ステートメントがクラス定義内でどのように機能するかについて悩んでいます。

私が理解しているように、クラス定義はその本体を新しい名前空間内で実行し(dictと呼びます)、クラス名をタイプ(name、bases、dict)の結果にバインドします。非ローカル x は、外側の非ローカル スコープのどこかにバインドされている変数を参照している限り、機能するはずです。

これから、次のコードがコンパイルされて実行されることを期待しています。

しかし、これは失敗します

次のコードは完全に実行されますが

関数定義のクロージャとクラス定義の違いを説明できる人はいますか?

0 投票する
1 に答える
1760 参照

python - Python での内部関数の再利用

Python 3 関数 (非ローカル変数を使用) を複数の他の関数内で、もう一度定義せずに使用する方法を理解しようとしています。これが私が意味することの非常に単純化された例です:

エラー ( SyntaxError: No binding for nonlocal 'var' found) が表示されますが、これは非常に間違っていると思われます。inner()決して単独行動をするつもりはありません。inner()正しい方法で再利用するにはどうすればよいですか?内部outer1()で定義してから再利用することはできませんouter2()よね?

わかりました、ええと...一般的な要求により...これが私のコードの関連セクションです...

0 投票する
1 に答える
925 参照

python - nonlocals() はどこにありますか?

現在のスコープの非ローカル変数を取得するにはどうすればよいですか? varslocals、の関数globalsは存在しますが、 を取得する関数はありnonlocalsますか?

を呼び出すときに非ローカルがリストされないのはなぜvarsですか?

アップデート

私の問題は、現在のスコープで使用可能な変数を列挙する方法がないことです。非ローカル AFAICT が含まれていないvarsか含まれていません。globals

vars次のようなコードでよく使用します。

これらの変数のいずれかが含まれている関数のスコープ内にある場合、これは失敗します。

0 投票する
3 に答える
390 参照

python - Python <3に「nonlocal」のようなものはありますか?

私はこのようなコードを手に入れました:

foo最も外側のスコープで定義したのは醜いので、outer機能しているだけにしておきたいと思います。私が正しく理解しているように、Python3ではこれはによって行われnonlocalます。私が欲しいもののためのより良い方法はありますか?私は宣言して割り当てfoo、そして多分それをouterデルケアしたいと思います:globalinner

(A)動作せずfoo、最も外側のスコープで検索されているようです。

0 投票する
3 に答える
719 参照

python - python nonlocal に相当する Ruby

Rubyでクロージャを書こうとしています。これは Python で書かれたコードです:

インクリメント内から変数 x にアクセスして変更できるように、Ruby に「非ローカル」に相当するものはありますか?

0 投票する
2 に答える
14314 参照

python - Pythonの非ローカルステートメントの構文エラー

この質問の回答で指定されている非ローカルステートメントの使用例をテストしたいと思います。

しかし、このコードを読み込もうとすると、常に構文エラーが発生します。

ここで私が間違っていることを誰かが知っていますか(私が使用するすべての例で、を含む構文エラーが発生しますnonlocal)。