Python♪コンピューターの変数の記憶には、参照先のアドレスが利用される。JuneホームPython♪の学習とホームページ作成のブログPython♪コンピューターの変数の記憶には、参照先のアドレスが利用される。2018.07.17コンピューターの中で、Pythonの変数はどの様に記憶されているのでしょうか。Pythonでは、そんなことを意識しなくても使えますが、関数での引数の受け渡しや、「参照渡し」「浅いコピー」「深いコピー」等を理解するには、ちょっと、勉強をした方がすっきりすると思います。目次1.変数への数値の代入2.変数へのリストの代入1.変数への数値の代入さて、簡単なコードですが、変数aに円周率3.141593を代入しました。このとき、コンピューターの中でa=3.141593は、どのように記憶されているのでしょうか。3.141593単純に考えると以下の様なイメージではないでしょうか。コンピューターのメモリーに変数aという場所を用意し、その中に3.141593という数字を保存するイメージです。実際にはこの様に記憶されていません。記憶される変数の数が少なければ、上のような方法でもよいでしょう。変数の数が多くなると、この方法では効率が悪いのです。小さな引き出しの消しゴムを探すのであれば、直接探すことができるかもしれません。膨大な量の荷物が保管された倉庫で消しゴムを探し出すのは大変です。この様な場合には、どの棚に何が入っているかを記録したデータベースがあれば、簡単に探し出すことができます。コンピューターの記憶場所には、一つ一つの場所に番号がつけられており、それを参照先ののアドレスといいます。下図では、データの保存場所のアドレスを記録した「参照先のアドレス帳」と、「数値を実際に保存する領域」に領域を分けています。実際にはこの様に明確に分かれていないかもしれませんが、ここでは考えやすいように分けてみました。この例では、アドレス帳には変数aの記録場所(0001番地)が示されており、データの保存領域の0001番地に、3.141593が記録されています。コンピューターの中では変数はこの様に記録されています。それでは、変数を追加してみます。bの値6.397056は0033番地に保管されました。新しいデータは、前のデータの直後に記録されるとは限りません。その場所に他のデータが記録されていると、そのデータを避けるようにコンピューターが自動的に最適な場所に記録します。以下の例では、変数aの参照先アドレスの直後ではなくて、少し離れた場所に変数bの参照先アドレスを記録しています。7]を変数cに代入しました。数値型の場合と違い、この例では2段階で要素の中身にたどり着くようになっています。cの参照先のアドレス(id)は0121番地となっており、そこにはc[0]の内容が保存されている1109番地と、c[1]の内容が保存されている1141番地が示されています。1109番地には3、1141番地には7が保存されています。7]いかがでしょうか。この記事は以下の記事を読む前の準備として作成したものですので、よかったら、こちらも読んでみてください。関連記事:変更可能体と変更不能体はidに注目。「参照渡し」や「浅いコピー」「深いコピー」の理解にも役立ちます。June関連記事PythonPython♪基本:「宝箱」に保管するテクニックの追加例題。abs()も使うよfor文で繰返し計算を行い、if文により必要なデータを宝箱に保管しておくテクニック記事の追加例題です。次のステップに進もうかと思いましたが、もう少し、例題を解くことにしました。この記事では絶対値を求める関数abs()を使って、誤差を...PythonPythonの環境整備Pythonの環境を整備するためには、Pythonだけをインストールすればよい訳ではありません。豊富な外部ライブラリを利用してこそのPythonの本領を発揮するのですが、これらは、Pythonをインストール後、別にインストールする必要があ...PythonPython♪本当は変数には参照先のアドレス(id)しか入っていない変数aに整数3を代入するとは、aという名前の箱に整数3を入れるようなイメージですが、実際にはそうではありません。整数オブジェクト3が別のところに独立して生成され、変数aには整数オブジェクトの保存先のアドレス(id)のみが記述されます。この...PythonPython♪関数内からグローバル変数を変更したときに関数の外側に与える影響グローバル変数は関数内からも参照することができます。関数内からグローバル変数を変更したときには、関数の外側にどの様な影響をあたえるのでしょうか。実はグローバル変数は、関数内へは「参照渡し」で渡されます。これは、関数の引数を用いて関数...PythonPython♪例外の基本(elseの必要性、raiseの使い方、ユーザー定義例外)「try文の実行順序が分かりにくい」「elseって必要なのかな」「raiseの使い方がわからない」「クラスの引数のExceptionってなに」「exceptのあとのasってなに」「ユーザー定義例外?」例外処理のコードって、いつも使うわけで...PythonPython♪基本:大切なものは「宝箱」に保管するテクニックプログラミングは、文法が全てではありません。基本的なテクニックを身につけることも大切です。最大値や最小値を求めるような問題では、必要なデータをif分で抽出し「宝箱」に保管しておくテクニックがあります。Studioが遅いときの対策2020.01.11Kotlin♪環境設定「HAXMがインストールされていません」2020.01.052020.01.08Python♪FEM:部材座標系の要素剛性マトリクス2020.01.04Kotlin♪スマホアプリの言語は、Kotlin、Java、C#、Dart?2020.01.012020.01.13スポンサーリンクスポンサーリンク。