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

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

python - タプルはPythonのリストよりも効率的ですか?

要素のインスタンス化と取得に関して、タプルとリストの間にパフォーマンスの違いはありますか?

0 投票する
7 に答える
289263 参照

python - time.sleep-スレッドまたはプロセスをスリープしますか?

Python for * nixではtime.sleep()、スレッドまたはプロセスをブロックしますか?

0 投票する
11 に答える
94645 参照

python - 「is」演算子は整数で予期しない動作をします

Pythonで次のように予期しない動作をするのはなぜですか?

Python2.5.2を使用しています。Pythonのいくつかの異なるバージョンを試してみると、Python2.3.3は99から100の間で上記の動作を示しているようです。

上記に基づいて、Pythonは内部的に実装されており、「小さい」整数は大きい整数とは異なる方法で格納され、is演算子はその違いを認識できると仮定できます。なぜ漏れのある抽象化?2つの任意のオブジェクトを比較して、それらが数字であるかどうかを事前に知らない場合に、それらが同じであるかどうかを確認するためのより良い方法は何ですか?

0 投票する
11 に答える
288977 参照

python - __slots__の使用法?

Pythonの目的は何ですか?__slots__特に、いつ使用したいのか、使用したくないのかについてはどうでしょうか。

0 投票する
8 に答える
71690 参照

python - CPython のグローバル インタープリター ロック (GIL) とは何ですか?

グローバル インタープリター ロックとは何ですか? なぜ問題なのですか?

Python から GIL を削除することに関して多くの騒ぎがありましたが、なぜそれがそれほど重要なのかを理解したいと思います。私は自分でコンパイラやインタープリターを書いたことがないので、詳細を倹約しないでください。おそらく理解する必要があるでしょう。

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

python - Pythonオブジェクトのコピー/ディープコピー操作をオーバーライドするにはどうすればよいですか?

コピーモジュールとの違いを理解してcopyいます。deepcopy私は以前に使用copy.copyして成功しましたが、実際にandメソッドcopy.deepcopyをオーバーロードするのはこれが初めてです。私はすでにグーグルで検索し、組み込みのPythonモジュールを調べて、and関数(、、、など)のインスタンスを探しましたが、それが正しいかどうかはまだ100%わかりません。__copy____deepcopy____copy____deepcopy__sets.pydecimal.pyfractions.py

これが私のシナリオです:

構成オブジェクトがあります。最初に、デフォルトの値のセットを使用して1つの構成オブジェクトをインスタンス化します。この構成は、他の複数のオブジェクトに渡されます(すべてのオブジェクトが同じ構成で開始されるようにするため)。ただし、ユーザーインタラクションが開始されると、各オブジェクトは、互いの構成に影響を与えることなく、その構成を個別に微調整する必要があります(つまり、初期構成のディープコピーを作成して渡す必要があります)。

サンプルオブジェクトは次のとおりです。

適切な動作を保証して提供するために、このオブジェクトにメソッドcopyとメソッドを実装する正しい方法は何ですか?deepcopycopy.copycopy.deepcopy

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

python - Pythonの組み込みのsort()メソッドについて

sort()Pythonに組み込まれているメソッドはどのアルゴリズムを使用していますか?そのメソッドのコードを見ることができますか?

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

python - Pythonのコンパイル/解釈プロセス

Pythonコンパイラ/インタプリタのプロセスをより明確に理解しようとしています。残念ながら、私は通訳のクラスを受講したことも、通訳について多くを読んだこともありません。

基本的に、私が今理解しているのは、.pyファイルからのPythonコードが最初にpythonバイトコードにコンパイルされるということです(これは私が.pyc時々見るファイルだと思いますか?)。次に、バイトコードは、プロセッサが実際に理解する言語であるマシンコードにコンパイルされます。ほとんど、私はこのスレッドを読みましたなぜPythonは解釈する前にソースをバイトコードにコンパイルするのですか?

私のコンパイラ/インタプリタの知識はほとんど存在しないことを念頭に置いて、誰かが私にプロセス全体の良い説明を教えてもらえますか?または、それが不可能な場合は、コンパイラ/インタプリタの概要を説明するリソースを教えてください。

ありがとう

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

python - 作成中のオブジェクトが割り当てられている名前にアクセスする

オブジェクトが割り当てられている名前を判別するためのコードを書いています。これは、一般的なデバッグ作業のためであり、Pythonの内部にさらに慣れるためのものです。

可能であれば、そのクラスのすべてのインスタンスに名前が記録されるように、クラスデコレータとして構造化しています。コードはかなり長いので、尋ねられない限り投稿しません。一般的なテクニックは次のとおりですが

  1. クラスの__init__メソッドをコードで装飾して、私がやりたいことを実行します

  2. 設定caller = inspect.currentframe().f_backして開きinspect.getframeinfo(caller).filename、に送信しast.parseます。ここではエラーチェックを行いません。これは、(1)これはデバッグ/プロファイリング/ハッキングのためだけのものです(2)この正確なプロセスが「完了したばかり」であるか、コードが実行されていないためです。これに問題はありますか?

  3. 現在実行中のメソッドを実行さast.Assignmentせるインスタンスを見つけます__init__

  4. その場合len(assignment.targets) == 1、左側にアイテムが1つしかないので、から名前を取得できますtargets[0].id。のような単純な形式a = Foo()assignment.valueは、はのインスタンスですast.Call。リテラル(リストなど)の場合、value関心のあるオブジェクトが名前に割り当てられていないため、そのリストとベイルになります。

assignment.value.funcそれが実際type(obj).__call__に私が興味を持っているオブジェクトであることを確認するための最良の方法は何ですか。それが「どこかにある」か、コードが実行されないことさえ保証されていると確信しています。私はそれがトップレベルにある必要があります。当然のことは、それを歩き、内部呼び出しが含まれていないことを確認することです。そうすれば、私は自分の名前を持っていることが保証されます。(私の推論は正しいです、その仮定が正しいかどうかはわかりません)。これは理想的ではありません。なぜなら、私が興味を持っている場合、それがであるかどうかわからないのでFoo、これは私を投げ捨てることにつながる可能性があるからです。 a = Foo(Bar())a = Bar(Foo())

もちろん、確認するassignment.value.func.idことはできますが、誰かがやった可能性がFoobar = Fooあるので、これに過度に依存したくありません。

どんな助けでも大歓迎です。いつものように、私は見落としているかもしれない他の提案や問題に興味があります。

また、「python-internals」タグを発明しなければならなかったことに本当に驚いています。

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

python - CPythonでid({})== id({})およびid([])== id([])なのはなぜですか?

CPython(他のPython実装についての手がかりがない)が次のように動作するのはなぜですか?

理由はいくつかありますが、具体的な理由がわかりません

編集

グレンとトーマスの主張をさらに証明するには: