問題タブ [python-internals]
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 で stderr をオーバーライドした場合の影響
次のコードにより、Python がクラッシュしました。
そのようなコードを書く本当の理由がないことはわかっていますが、なぜクラッシュしているのか疑問に思っていました。
私の最初の推測は、print
コマンドstdout
がオーバーライドされているために失敗し、例外を発生させようとしているときに、オーバーライドされているために別の例外が発生したということstderr
でした。
そのため、例外を発生させようとしているときにスタック オーバーフローが発生します。
ここでバックグラウンドで実際に何が起こっているのか、誰か説明できますか?
これはスタックオーバーフローですか?
python - Python の int 関数のパフォーマンス
Python の組み込み関数intは、値が既に整数であっても、送信された値を変換しようとしますか?
より簡潔に:変換アルゴリズムによってと の間int('42')
にパフォーマンスの違いはありますか?int(42)
python - PythonでNoneが最小なのはなぜですか?
Python None から学んだこと:
None is frequently used to represent the absence of a value
リストに入れて数字と文字列でソートすると。次の結果が得られました。これは、最小の数値であることを意味します。
逆行する:
通常の並べ替え:
python sorted 関数は None でどのように機能していますか?
python - 複合オブジェクトでのpythonガベージコレクタの動作
一部のパーツがまだ参照されている場合、Pythonガベージコレクターは複合オブジェクトをクリーンアップしますか
例えば
A[0]
ガベージコレクションされますか?
コードで同じことを確認する方法はありますか?
python - Python:実行時に名前を評価する方法
名前が定義されていない場合とバインドされていない場合は、実行時に と がそれぞれ表示されNameError
ます。UnboundLocalError
しかし、実行時に名前の評価がどのように行われるのかは明確ではありません。私は次のことを想定しています:
コードスニペットの例を検討してください
bar
関数が呼び出されると、新しい実行フレームが作成されます。このフレームを としbar_frame
ます。bar_frame.f_local
ディクショナリに含まれる要素はありません。ただしbar_frame.f_back.f_locals
、4 つの名前と値のペアが含まれています。など
私の理解:名前評価には次のアルゴリズムがあります。
で検索しようとして
name
いますcurrentframe.f_locals
1.1
currentframe.f_locals
グローバル名前空間に対応し、適切な名前が見つからない場合はスローするNameError
1.1 適切な名前が見つかり、境界がある場合は返す
currentframe.f_locals[name]
1.2 適切な名前が見つかり、無制限の場合は
UnboundLocalName
エラーをスローします。で検索しようとして
name
いますcurrentframe.f_back.f_locals
私の理解を確認してください。
python - self = None は何をしますか?
入ってくるasyncio
パッケージのソースコードを読んでいます。self = None
メソッドの最後にステートメントがあることに注意してください。それは何をするためのものか?
インスタンスが消去されると思いましたが、次のテストではそうではありません。
python - locals() の呼び出しで参照が追加されるのはなぜですか?
以下の動作がわかりません。
locals()
新しい参照はどのように発生しますか?- gc.collect で削除されないのはなぜですか?
locals()
私はどこにも結果を割り当てませんでした。
バツ
出力は次のとおりです。
python - Python: 複数の割り当てと個別の割り当ての速度
私は自分のコードからもう少しパフォーマンスを絞り出そうとしています。最近、この Python wiki ページを閲覧しているときに、次の主張を見つけました。
複数の割り当ては、個別の割り当てよりも遅くなります。たとえば、「x,y=a,b」は「x=a; y=b」よりも遅くなります。
好奇心が強い、私はそれをテストしました(Python 2.7で):
順序を変えて何度か繰り返しましたが、複数の割り当てスニペットは、個別の割り当てよりも一貫して少なくとも 30% 優れたパフォーマンスを発揮しました。明らかに、変数の割り当てを含むコードの部分が重大なボトルネックの原因になることはありませんが、それでも私の好奇心は刺激されます。ドキュメントが別の方法で提案しているのに、なぜ複数の代入は個々の代入より明らかに速いのですか?
編集:
2 つ以上の変数への代入をテストしたところ、次の結果が得られました。
傾向はほぼ一貫しているようです。誰でも再現できますか?
(CPU: インテル Core i7 @ 2.20GHz)