問題タブ [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 投票する
4 に答える
960 参照

python - なぜpythonは参照による変数の受け渡しを許可しないのですか

これはおそらくディスカッション グループに適していると思いますが、私は言語の内部 (または言語自体) に精通していません。いずれにせよ、私を悩ませているのは:

Python がキーワードを使用して外部スコープとの干渉 (副作用) をnonlocal許可している場合、参照による引数の受け渡しを許可することで、関数の引数との同様の干渉を許可しないのはなぜですか。

現在可能:

そうでない理由 - または、次のような場合に何がうまくいかない可能性がありますか:

(「byref」や「nonlocal」などのキーワードを使用して説明します)。

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

python-3.x - なぜこのpythonプログラムは次の出力を持っているのですか?

出力は 1 2 10 20 です。なぜこれらの出力が得られるのかわかりません。詳しく説明できる人はいますか? ありがとう!

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

python - Python 3 で非ローカルを理解する

Python 3 の変数スコープとnonlocal.

次の関数を考えてみましょう (これは単なる例です)。

これはなくても問題なく動作しnonlocalます。somethingしかし、非ローカルの必要性に応じて、条件付きでゲッターとセッターを作成したい場合。

nonlocalが必要な場合とそうでない場合があるのはなぜですか? 言い換えれsomethingば、最初のケース ( なし) で正しく見つかったnonlocalのに、2 番目のケースでは "UnboundLocalError: 割り当て前に参照されたローカル変数 'something'"nonlocalが存在しない場合はなぜですか?

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

python - Python 3でローカルではなくグローバルではない変数を保持する

だから私はクロージャーで遊んでいるPython 3.4.1に小さなコードを持っています

もともと私は電話できるかどうかを見たかった

そして、最終行がJavaScriptのように56より大きい数値を出力するかどうかを確認します(私は思う)

しかし、代わりに「paw」の「x」をローカルに呼び出したので+=(そうですか?)、GETしようとするとエラーがスローされますx+=1

外側のスコープで変数を変更することに対する何らかの規則はありますか?

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

python - Python3.4で非ローカルまたはグローバルとは異なる変数にアクセスできますか?

特定のスコープで他の変数にアクセスできますか? このような:

それは生死の問題ではありません、私はただの好奇心です。Pythonでグローバルと非ローカルがどのように機能するかを学びました。今のままで十分だと思いますが、私が求めていることは可能なのだろうか。特に、これについて pep を読んだところ、「特定のスコープで非ローカル」のようなものを作成することを考えていました。しかし、代わりに非ローカルを使用することにしました。非ローカルなしでこれを行う方法があるからですか?それとも、2回書くなど、非ローカルに何らかのトリックがあるのnonlocal nonlocal variableでしょうか?

0 投票する
4 に答える
1390 参照

python - Pythonでクラス定義内の非ローカルスコープにアクセスするには?

私はこれをしたい(ダミーの例):

しかし、「SyntaxError:非ローカル 'var' のバインディングが見つかりませんでした」というメッセージが表示されます。

私が実際にやろうとしているのは、そのメソッドが装飾されている場合、クラスのスコープ内のリストにメソッド名を追加することです。このようなもの: