私はC/C++を学んだとき、言語の構文と言語構成の意味論だけでなく、プログラムがコンピュータによってどのように実行されたかについても学びました。Pythonのメモリモデル/実行環境の簡潔な解説?
すべてのローカル変数は、関数が呼び出されるたびに に割り当てられたスタックフレームで宣言されています。これらのフレームは、他の後 コールスタック1件の右側にレイアウトされ、これにより迅速かつ効率的に 機能が戻ると、その関数
これをするためにローカル 変数を「破壊」するとき、彼らは「ほどか」しているされていますその結果、ローカル変数&のアドレスを呼び出し関数に返すことが悪い考えであるとわかりました。言い換えれば、C/C++のメモリモデルとそのコードが実行される環境を理解することで、正しいプログラムを書く方法をより深く理解することができます。
もう一つの例:malloc関数/新しいは、彼らがそれらを割り当てられた機能の終わりを超えて生きる理由を説明している両方の、「ヒープ」(およびないスタック)内のオブジェクトを割り当てます。さらに、これらの関数/キーワードがオブジェクトが位置しているメモリアドレスを返すことを知ることは、リンクリストのようなものがどのように機能するかを理解する助けになりました。 (そして、どのように私は別の*
か->
かが必要かどうかを把握する。)
だから今、私は、Pythonを学んだし、私はPythonプログラムがそのメモリを管理する方法の、簡潔明瞭な、まだ完全な説明を探しています実行環境。私は間違った検索用語を使用している場合がありますが、一般的にはそこに非常に少ないがあるように見える - オンライン検索
は特に実りされていません。
私はhttps://docs.python.org/を見て、それが構文とセマンティクスのための優れたリソースであることを発見しました(「Xを入力するとYが起こります」)が、実際にはコンピュータが何をしているのかを記述していませんフード '。
Stack Overflowでいくつかの記事を見つけましたが(this、this、thisなど)、これらはすべて特定の状況に焦点を当てているようです。
は実際にはPythonが "ボンネットの下に何をしているかを説明し、リソースの人を知っていますか?
編集:私はこの質問を 重複してもよいことにStackOverflowからのフィードバックを取得しています。 The other question asks '.PYファイルはどのようにして (バイトコードに)コンパイルされ、VMによって実行されますか?'ここでは、 は、Pythonがどのように変数を設定するのかを説明するページがあります。メモリには オブジェクトや関数などがあり、実際にはPythonプログラムを実行するためにはどれも使用されています(サブ質問:あなたができることをすぐにフードの下で何が起こっているかについて知りたいのpythonで適切なコメントでこれを入れて 方が良いでしょうか?重複した質問への懸念に対処するための 方法はありますか?)
pythonは実際にはC言語で書かれているので、言語自体のソースコードを入手し、それがどのように動作するかを理解するのに役立ちます。 –
[このプログラマーの質問](http://programmers.stackexchange.com/q/246094/143097)も役立ちます。 – skrrgwasme
https://docs.python.org/3/faq/design.html?highlight=garbage%20collection#how-does-python-manage-memoryにはいくつかのポインタがあります –