変数についてプログラム言語では、変数とは、なんらかの値を格納する領域です。Pythonの場合、使用する前に変数を宣言する必要はありません。変数に値を代入した時点で、領域が用意されます。Pythonのようなオブジェクト指向言語では、変数に値そのものが格納されるのではなく、変数の値を指し示す「リファレンス」が格納されると考えるとよいでしょう。n1あるいは、「変数名」は値に設定されたタグのようなイメージでとらえてもかまいません。n2次のように、変数を別の変数に代入した場合には、同じ値を指し示すようになります。id()関数でオブジェクトのIDを調べるPythonでは数値や文字列を含め、すべての値はオブジェクトです。オブジェクトのID(識別値)を調べるにはid()関数を使用します。変数名を引数にid()関数を実行すると参照しているオブジェクトのIDを表示します。前述の例で変数name1とname2のIDをid()関数で調べると、同じIDのオブジェクトを参照していることがわかります。変数に別の値を再代入した場合にはどうでしょう?次の例では、まず、1で変数numに10を代入し、2で変数numの値に「1」を加えて、変数numに代入しています。←2この場合、2で値が「11」の新たなオブジェクトが生成され、そのリファレンスが変数numに格納されます。1と2では変数numは異なるオブジェクトを指し示しています。このことはid()関数を使用して確かめられます。ミュータブルな値とイミュータブルな値Pythonのデータ型は、後から値を変更可能な「ミュータブル」な型と、変更出来ない「イミュータブル」に大別されます。...Pythonでは文字列や数値といった基本的なデータ型もイミュータブル、つまり後から変更出来ない型です。前述の例では変数numの値に1を足して、変数numに再代入していました。←2これは一見、変数numの値を変更しているように見えるので、数値型はミュータブルな型なのでは?と思うかもしれませんが、実はそうではありません。id()関数の実行結果を見るとわかるように、1と2では、変数numは異なる値を指し示しているのです。リストはミュータブル、タプルはイミュータブルさて、Pythonでは「リスト」はミュータブル、つまり後から値を変更可能な型です。次の例では、3つの整数を要素とするリスト「ages」を生成し、3番目の要素を変更しています。4]id()関数で調べると、当然のことながら要素の値を変更後もIDは変化していません。←IDは同じそれに対してタプルはイミュータブルな型です。要素の値を変更しようとするとエラーになります。文字列もイミュータブル文字列もイミュータブルな型です。したがって、次のように内部の文字を変更しようとするとエラーになります。assignment誤解しやすい例として、次の例を見てみましょう。str'abcbcd'この例では、1で変数strと文字列「"bcd"」を連結しているため、文字列が変更されたように見えますが、そうではありません。1で新たな文字列「"abcbcd"」が生成され、そのリファレンスが変数strに格納されるのです。id()関数で調べると1の後でIDが変更されていることが確認できます。Otsu@makotoo2大津真。upLoginユーザーは見つかりませんでした。