問題タブ [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メソッドでのローカル変数の最適化
次のコードでは、メソッドが呼び出されるたびに grade_to_score 辞書が作成されるかどうかを知りたいですか?
また、それを確認する方法は何ですか?私はPython 2.7で作業しています
python - Python でモジュールをインポートする最良の方法
次のように、すべてのモジュール関数を一度に名前空間にインポートすると、パフォーマンスが低下しますか?
次のように、モジュール関数を使用する必要があるときにのみモジュール関数をインポートするのとは異なります。
python - 小さなリストよりも小さな文字列を反復処理する方が遅いのはなぜですか?
私は timeit をいじっていて、小さな文字列に対して単純なリスト内包表記を実行すると、小さな単一文字列のリストに対して同じ操作を実行するよりも時間がかかることに気付きました。説明はありますか?約1.35倍の時間です。
これを引き起こしている下位レベルで何が起こっているのでしょうか?
python - Python では、f.readlines() と list(f) の違いは何ですか?
Python2 チュートリアルとPython3 チュートリアルの両方から、セクション 7.2.1の中間点に次の行があります。
リスト内のファイルのすべての行を読みたい場合は、
list(f)
またはを使用することもできますf.readlines().
だから私の質問は: ファイル オブジェクトをリストに変換するこれら 2 つの方法の違いは何ですか? 私は、パフォーマンスの側面と Python オブジェクトの実装の下の両方 (そしておそらく Python2 と Python3 の違い) に興味があります。
python - type.__getattribute__ と object.__getattribute__ の違いは何ですか?
与えられた:
さて、それは super を呼び出すか、mro をクロールしますか?
これは予期されることです。
getattr が行うのに getattribute が行わないのは何ですか?
何?! type.__getattribute__
は super を呼び出しますが、object
のバージョンは呼び出しませんか?
python - 「内部」のpython setとdictの違い
set と dict の内部実装がPythonでどのように異なるか教えてもらえますか? バックグラウンドで同じデータ構造を使用していますか?
++ 理論的には、dict を使用してセット機能を実現できます。
python - タプルでタプルを呼び出すときのタプル ID
tuple(tuple_instance)
私は、(最適化として) コピーを作成せずに入力タプルを返すことができるはずだと仮定していました。CPython では、これが当てはまるように見えます。
これまでのところ良い。ただし、ソースを熟読すると、ここでプレイする可能性のあるPyTuple_MAXSAVESIZEがあることがわかります。より大きなタプルで試してみましょう:
そして、それもうまくいくようです。
私の主な質問は、この動作が CPython で常に当てはまるかどうかです。PyTuple_Newを見ましたが、ここに表示されていることを説明するものは何も表示されないため、この動作は別の場所で定義する必要があります (または見逃してしまいました...私の C はこの時点でかなり萎縮しています.. .)。
python - 不変文字列のID変更について
id
(python 2.7 の)型のオブジェクトについての何かがstr
私を困惑させます。str
タイプは不変であるため、一度作成されると、常に同じid
. 私は自分自身をうまく表現していないと思うので、代わりに入力と出力シーケンスの例を投稿します。
その間、それは常に変化します。ただし、変数がその文字列を指すようになると、状況が変わります。
そのため、変数がその値を保持すると、id がフリーズするように見えます。確かに、 と の後del so
、del not_so
出力がid('so')
再び変化し始めます。
これは、(小さい) 整数の場合と同じ動作ではありません。
不変性と同じものを持つことの間に実際の関係はないことを私は知っていid
ます。それでも、私はこの動作の原因を突き止めようとしています。Python の内部構造に精通している人は、私ほど驚かないと思うので、同じ点に到達しようとしています...
アップデート
別の文字列で同じことを試してみると、異なる結果が得られました...
今は平等です...
python - メソッドでの演算子「is」の非常に奇妙な動作
最初の結果False
が であってはならないのはなぜTrue
ですか?
python - Python for ループでイテレータとシーケンスに同じ名前を使用できるのはなぜですか?
これはより概念的な質問です。for
私は最近、ループが繰り返し処理されたリストとリスト内の項目の両方に同じ名前を使用している Python のコードを見ました (2.7 で動作し、2.5 でも実行された可能性があります)。、これは悪い習慣であり、まったく機能しないものであると私は思います。
例えば:
収量:
さて、出力された最後の値がループから x に割り当てられた最後の値になることは私には理にかなっていますが、for
ループの両方の部分に同じ変数名を使用して、意図したとおりに機能します。それらは異なるスコープにありますか?このような動作を可能にするフードの下で何が起こっているのでしょうか?