Pythonの①変数宣言の基本と②データ型の基本を3分でわかりやすく解説します。
参考 変数とは?

変数とは、コンピュータプログラム内でデータを一時的に保存するための記憶領域を指し示すもの。変数は、データを保持する「箱」のようなものと考えることができます。
このページではPython初心者向けに変数宣言(変数定義)の基本・考え方をサンプルコード付きでわかりやすくご説明します。
Pythonエンジニアを目指す方であれば知らないと恥ずかしい超基本知識です。是非最後までご覧ください。
参考 Pythonの文法ルール
【前提】変数とは?
プログラミングにおける変数(variable)とは、データを扱うメモリ領域のことを指します。

メモリ領域というと言葉が難しいですが、変数は「箱」に例えて考えるとわかりやすくなります。

この「箱」には、数字や文字列、日付などの様々な値を入れることができます。
「箱」の中の値を足し算してみたり、「箱」の中の値を画面に表示させてみたり、「箱」の中の値に応じて処理を変えてみたり、様々な用途で利用することができます。
プログラミング学習の第1歩!

変数とは何か?データ型とは?変数って何が大事なの?という疑問を解消しておきたい方は、是非以下の記事をご覧ください。
Python:変数の宣言方法
Pythonでは、変数を宣言する際には特別なキーワードを必要とせず、単純に変数名とその値を等号(=)を使って結びつけます。

早速、具体的なサンプルコードを見てみましょう。
# 変数の宣言と代入 x = 5 # 整数型の変数 y = 3.14 # 浮動小数点型の変数 z = "Hello, World!" # 文字列型の変数
変数と初期値を=(イコール)で結ぶだけでOK。上記の例では、整数値5を変数x
に、浮動小数点数3.14を変数y
に、そして文字列"Hello, World!"を変数z
にそれぞれ代入しています。
ページ後半で解説しますが、Pythonは動的に型付けをしてくれるので、データ型の指定は不要です。
参考 データ型とは?
変数宣言のみ(None)
Pythonは動的型付け言語であるため、変数を宣言するときには初期値を設定することが一般的です。

上記で解説した通り、変数はその値を代入することで自動的に作成され、その時点で初期値が設定されます。
# 変数の宣言と代入 x = 5 # 整数型の変数 y = 3.14 # 浮動小数点型の変数 z = "Hello, World!" # 文字列型の変数
しかし、実際には変数を宣言する際に具体的な値がわからない、または後で値を設定したいという状況もあります。そのような場合、None
を初期値として設定することができます。None
はPythonにおいて、「何もない」状態を表す特殊な値です。
x = None
このコードは、x
という名前の変数を作成し、その初期値としてNone
を設定しています。このx
に対して後から具体的な値を設定することができます。
x = 10 # xに値10を設定
JavaScriptなど他の言語では、変数だけを宣言しておき中身はからっぽにすることもできますが、この点Pythonは少しだけ特殊です。
// 初期値あり let sample = 1; // 初期値なし let sample;
一度に複数の変数を宣言・定義する方法
Pythonでは、一度に複数の変数を宣言し、それぞれに異なる値を代入することが可能です。それぞれの変数とその値をカンマで区切って一行に列挙します。
x, y, z = 1, 2, 3

このコードは、x
、y
、z
という3つの変数を一度に宣言し、それぞれに1
、2
、3
という値を代入しています。
また、同じ値を複数の変数に代入することも可能です。
a = b = c = 0

このコードは、a
、b
、c
という3つの変数すべてに同じ値0
を代入しています。
注意点としては、代入する値の数と変数の数が一致していなければならないという点。値の数と変数の数が一致しない場合、PythonはValueError
を発生させます。
x, y = 1, 2, 3 # ValueError: too many values to unpack
上記の例では、値が3つあるのに対し、変数が2つしかないため、エラーが発生します。
同様に、値の数が変数の数より少ない場合もエラーが発生します。
x, y, z = 1, 2 # ValueError: not enough values to unpack
この例では、値が2つしかないのに対し、変数が3つあるため、エラーが発生します。

このようなエラーを避けるためにも、基本は1行で1つの変数宣言を行うようにするのがおすすめです。
Python:変数の命名ルール

Pythonにおける変数の命名ルールは以下の通りです。

PythonコミュニティではPEP 8というスタイルガイドが推奨されており、その中で変数名は全て小文字で書き、単語をアンダースコアで区切ること(my_variable
)が推奨されています。
以上がPythonの変数命名の基本ルールです。適切な変数名を選ぶことは、コードの可読性を高め、他の人がプログラムを理解しやすくするために重要です。
予約語(またはキーワード)とは、Python言語自体の中核を形成するために特別な意味を持つ単語のことを指します。予約語は、変数名、関数名、クラス名などの識別子として使用することはできません。
参考 Pythonの主要な予約語
予約語 | 説明 |
---|---|
and | 論理AND演算子。両方の条件がTrueであればTrueを返します。 |
as | エイリアスを作成するときに使用します。 |
break | ループの中断を行います。 |
class | クラスの定義を行います。 |
def | 関数の定義を行います。 |
if | 条件分岐を行います。 |
else | if 文の条件がFalseのときに実行されます。 |
elif | 前のif またはelif 文の条件がFalseのときに評価されます。 |
for | for ループの定義を行います。 |
while | while ループの定義を行います。 |
import | モジュールをインポートします。 |
from | 特定のモジュールから特定の関数やクラスをインポートします。 |
return | 関数から値を返します。 |
try , except | 例外処理を行います。 |
True , False | 真偽値を表します。 |
None | 何もない状態を示す特別な値です。 |
これらの単語はPythonの文法を構成するために予約されているため、変数の名前として利用することはできません。
Python:定数定義(大文字のアルファベット)
Pythonでは、数という概念がありません。そのため、他のプログラミング言語とは異なり定数を定義するための文は存在しません。

ただし、定数が使えると便利な側面があるのも事実。そのため、Pythonでは変数を定数的に扱うことがあります。その際、定数と変数を区別する方法として、変数を定数として扱う場合には大文字で記載するというが慣例です。
もちろん、変数に大文字のアルファベットを用いて命名しても仕組み上の問題は発生しません。
# PIは円周率を表す定数 PI = 3.14159 # MAX_SIZEは配列やリストの最大サイズを表す定数 MAX_SIZE = 100
定数とは、プログラムの実行中に値が変更されることのない変数を指します。
多くのプログラミング言語には定数を定義するための特別な構文がありますが、Pythonではそのような構文が存在しません。
Python変数:動的型付け
変数の基本で学んだ通り、変数には文字型や数値型といった様々なデータ型が存在します。
参考 データ型とは?

C言語やABAPなどでは、値を代入する前にデータ型を事前に定義する必要がありましたが、Pythonでは変数を利用するタイミングで自動的にデータ型が決められます。
この自動的にデータ型が決定される仕組みを動的型付けと呼びます。
動的型付けの仕組み
以下のコードをご覧ください。
b = 100 c = "こんにちは"
この場合、変数"b" は数値型に。変数"c" は文字型として扱われます。
Pythonが動的型付け言語であるため、初期値「100」と「こんにちは」という値をPython自身が何型であるかを判断してくれるのです。
a = 1 b = 10 print(a+b)
参考 print関数の使い方
このサンプルコードの結果は「11」となります。
一方で、以下のように記述すると結果は「110」となります。
a = "1" b = "10" print(a+b)

変数"a" と変数"b" をPythonが文字列とみなしたため、加算ではなく「結合」をしたことによる結果です。
このように、Pythonでは変数のデータ型を強く意識する必要がありません。初心者にとっては少しだけ楽に感じれるポイントです!
ただし、全く意識しなくて良いというわけではありません。例えば、以下のように異なるデータ型の変数をあつかう際には注意が必要です。
a = 1 # 数値型 b = "2" # 文字型 print(a+b) # TypeError: unsupported operand type(s) for +: 'int' and 'str'
JavaScriptも、Pythonと同じ動的型付け言語です。
動的型付けとは、プログラミング言語の特性の一つで、変数のデータ型を実行時に決定する特性を指します。

つまり「プログラムが実行されるまで変数の型は確定しない」ということ。
例えば、Pythonでは以下のように、同じ変数に異なるデータ型の値を代入することが可能です。
x = 10 # xは整数型 (int) x = "Hello" # そして今、xは文字列型 (str)
最初、x
には整数値10
が代入されていますが、その後x
に文字列"Hello"
が代入されています。これはPythonが動的型付けを行っているために可能な仕組み。
変数x
の型は、それに代入される値によって動的に変わるという点を押さえておきましょう。

静的型付けの言語(例えばJavaやC++)では、変数が宣言されるときにその型が確定し、その後その型を変更することはできません。もし異なる型の値を代入しようとすると、コンパイラや実行環境がエラーを発生させます。
変数の削除:del文

一度宣言した変数は、後から削除することもできます。
変数を削除するには「del」を利用します。
a = 100 del a print(a) # NameError: name 'a' is not defined
変数の削除(解放)を行うことで、メモリが解放されるため、よりパフォーマンスに優れた機能を実現することができます。
変数もメモリを利用するので使いすぎるとパフォーマンスを悪化させる原因となります。変数が増えすぎて、プログラムの実行速度に影響を与えていそうな場合は、「del」を用いて変数を削除するという案を考えても良いかもしれません。

ただし、よほどのことがない限り「del」は使わなさそうなので一応、こんなのもあるんだ!という豆知識程度に覚えておけばOKです。
Python:変数の使い方のまとめ

始めてPythonを勉強するのは結構難しいですよね。
でもその悩みを抱えているのは一人じゃありません。全てのPython使いが同じ道を進んできました。
Pythonをはじめとするプログラミングスキルを武器に、時間と場所に捉われない自由な生き方を目指してみませんか?今すぐ行動したい方は以下の記事をチェック!
読者料典 Python入門:学習カリキュラム ←こちらから!