変数の定義と値の代入

Python では変数を利用するためには最初に変数を定義します。ここでは変数を定義する方法や、変数名の付け方などについて解説します。

(Last modified: )

変数を定義する

Python では変数を使用する時に事前に使用する変数を宣言したり、変数で扱うデータ型を指定する必要はありません。ただし定義されていない変数の値を参照しようとするとエラーが発生します。

print(num)

>> Traceback (most recent call last):
>>   File "<stdin>", line 1, in <module>
>> NameError: name 'num' is not defined

Python では変数に値を代入した時に変数が定義されます。

変数名 = 値

変数に代入できる値は数値や文字列、その他のオブジェクトなどです。

old = 24
str = "Hello"
colorlist = ["red", "blue", "yerllow"]

代入に使用されている演算子 = は代入演算子と呼ばれるもので、右辺の値やオブジェクトを左辺の変数に代入します。

変数が定義されると、変数をプログラムの中で記述することができます。変数を記述すると、変数が参照している値に置き換えられて使用されます。

num = 10
print(num)

>> 10

この例では変数 num に整数の 10 を代入して変数を定義します。その後で print 関数の引数として変数 num を指定しています。変数 num が参照している 10 に置き換えられて print 関数が実行されて 10 が画面に表示されます。

変数名の付け方

変数名は次のルールに従って付けてください。

・使用できる文字は a ~ z 、 A ~ Z 、 0 ~ 9 、アンダーバー(_)、漢字など
・一文字目に数値(0~9)は使用できない
・一文字目にアンダーバーは使用できるが特別な用途で使用されているケースが多いので通常は使用しない方がいい
・大文字と小文字は区別される
・予約語は使用できない

一つ一つ確認していきます。

変数名には英数字とアンダーバーに加えて Python 3 では漢字なども使用できます(あまりおすすめではありません)。

address2019 = "Tokyo"
print(address2019)

>> Tokyo

年齢=25
print(年齢)

>> 25

数字は使用できますが一文字目には使用できません。

7point = 250

>>   File "<stdin>", line 1
>>     7point = 250
>>      ^
>> SyntaxError: invalid syntax

変数名では大文字と小文字は区別されます。

str = "Hello"
STR = "Python"
print(str, STR)

>> Hello Python

予約語というのは Python の構文などで使用される単語です(例えば if とか and とか)。予約語の一覧は次の通りです。

Falseawaitelseimportpass
Nonebreakexceptinraise
Trueclassfinallyisreturn
andcontinueforlambdatry
asdeffromnonlocalwhile
assertdelglobalnotwith
asyncelififoryield

予約語は変数名には使用できません。変数名として定義しようとするとエラーとなります。

from = "Tokyo"

>>   File "<stdin>", line 1
>>     from = "Tokyo"
>>          ^
>> SyntaxError: invalid syntax

これらのルールを踏まえた上で変数名を付けてください。

定義済の変数に別の値を代入する

変数を定義する時には変数に対して値を代入しますが、一度値が代入された変数に別の値をあらためて代入することができます。

name = "Yamada"
name = "Tarou"

Python では変数は値を保管する場所ではなく、値が保管されている場所を指し示すものです。新しい値を変数に代入すると、変数は新しい値の場所を指し示すようになります(値が数値や文字列の場合)。

また 変数に代入された値にはそれぞれデータ型がありますが、変数そのものには型はありません。その為、数値型の値を代入して定義した変数に、あとから別のデータ型の値を格納することもできます。

personal = "Yamada"
personal = 24
サンプルコード

次のサンプルを見てください。

personal = "Yamada"
print(personal)
>> Yamada

personal = "Tarou"
print(personal)
>> Tarou

personal = 24
print(personal)
>> 24

定義済の変数にあとから値を代入して、変数の参照する値が変わっていくことを確認することができました。

変数を別の変数に代入する

値が代入されて定義された変数は、式の中で使用すると変数が参照している値と置き換えられて実行されます。

次の例では print 関数の引数に変数 num が記述されています。 num には整数の 10 が代入されているので、 print 関数の中に num + 5 が 10 + 5 に置き換えられて実行されます。

num = 10
print(num + 5)

また変数を別の変数に代入することができます。次の例では変数 num1 に 10 を代入して定義したあと、今度は変数 num2 に 変数 num1 を代入して定義しています。

num1 = 10
num2 = num1

この場合、変数 num1 と 変数 num2 は同じ場所に保管されている 10 という値を参照することになります。

注意頂きたいのは、この後で変数 num1 に別の値を代入すると、 num1 は新しい値を参照するようになりますが、変数 num2 は引き続き 10 という値を参照したままになるということです。

num1 = 10
num2 = num1
num1 = 20

数値や文字列などの値は一度保管されたら別の値に置き換えることはできません。 num1 に別の値を代入すると、 num1 が参照していた場所に新しい値が保管されるのではなく、まったく別の場所に新しい値を保管し、その場所を変数 num1 は参照するようになるわけです。この時変数 num2 は元の場所を参照したままなので、変数 num1 は値 20 の場所、変数 num2 は値 10 の場所をそれぞれ参照します。

※ 数値や文字列は新しい値で置き換えることはできませんが、変数に新しい値を代入すると変数が参照していた場所に新しい値が保管されるようなデータ型も存在します。

サンプルコード

次のサンプルを見くください。

name1 = "Yamada"

print("name1=" + name1)
>> name1=Yamada

name2 = name1

print("name1=" + name1)
>> name1=Yamada
print("name2=" + name2)
>> name2=Yamada

name1 = "Suzuki"

print("name1=" + name1)
>> name1=Suzuki
print("name2=" + name2)
>> name1=Yamada

変数を別の変数に代入することで同じ値を参照するようになったり、その後で別の値を代入すると代入された変数だけが新しい値を参照するようになることを確認しました。

-- --

変数を定義する方法や、変数名の付け方などについて解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。