今回は、Pythonの変数について説明します。プログラミングにおいて大切な概念である変数について、学んでいきましょう。
この記事では、
- 変数に関する説明
- 変数の型
について解説します。さらに、
- 変数の命名規則
についての解説を通して、実際のプログラミングで気をつけることを説明します。
※ この記事のコードはPython 3.7, Ubuntu 18.04で動作確認しました。
本記事を読む前に、Pythonがどんなプログラミング言語なのかをおさらいしておきたい人は次の記事を参考にしてください。
→ Pythonとは?特徴やできること、活用例をわかりやすく簡単に解説
なお、その他のPythonの記事についてはこちらにまとめています。
変数とは
プログラミングで使う変数とは、メモリ上のデータに、アクセスしやすいようにつける名前です。
数学の変数も「3x+1=0」の「x」の部分を指しますが、基本的にプログラミングの変数とは違うものとして考えましょう。
また、変数と値を対応付けることを代入といいます。このように変数に値を「代入」するという考え方は手続き型言語(C言語、PHP、Pythonなど)でよく用いられます。
また、もしかしたらこれに似た動作を「束縛」と言っている記事を見たことがある方がいるかもしれません。これは関数型言語(Haskell, Lisp, Rustなど)でよく用いられます。関数型言語では変数が値に束縛されると考えます。
Pythonについて調べていても、もしかしたら出会うかもしれない表現です。
そういう表現もあるのだ、程度でいいので覚えておいてください。また、Pythonでは動的型付けという型システムを採用しています。
つまり「int num = 10」のように書かなくても、「num = 10」と書けばnum変数はint型だと自動で型を予測してくれるということです。これらを念頭に、実際にPythonの変数の使い方を見ていきましょう。
変数に値を代入する方法
ここからは、Pythonで実際に変数に値を代入する方法を解説します。
いくつかの変数への代入方法を紹介します。
a = 100 b = c = 200 d,e = 300,400 print("a=",a) print("b=",b) print("c=",c) print("d=",d) print("e=",e)
このように、変数を左、代入する値を右に書きます。
イコールの両端の半角スペースは、開けても開けなくてもかまいません。一つのイコールでも、カンマで区切れば複数の変数に複数の値を一度に代入できます。
実行結果
a= 100 b= 200 c= 200 d= 300 e= 400
ちなみに、変数名として使えるのは
- 小文字の英字
- 大文字の英字
- 数字
- アンダースコア
のみで、数字は変数の名前の先頭には使えません。また新しい言語ではギリシャ文字なども使えますが、Pythonでは使うことができません。
a1 = 100 a_b_c_ = 200 _abc = 300 __1a = 400
これらは有効です。
しかし、以下の変数は使用できません。
1a 1__a 01_01
変数には関数も入れることができます。
def msg(): print("Hello") func = msg msg() func()
これは関数がオブジェクトとして扱えるからです。
Hello Hello
またクラスもオブジェクトなので、関数同様に変数に代入することができます。
変数の型について
Pythonでは変数の型を宣言する必要はありません。動的型付けによって、型が自動的に判別されています。
変数に代入されたオブジェクトの型をしっかり確認したい場合は、type/isinstance関数を使います。詳しくはこちらの記事をご覧ください。
ここまで変数を作るときに型を宣言しなくてもいいと解説してきました。ですがPython 3.5以降のバージョンではtype hintingというものが登場しました。
これは関数の引数や返り値の型を宣言することで、コーディング・デバッグをしやすくしてくれるというものです。これについてはこちらの記事で詳しく解説しています。
変数の命名規則について
変数の名前はルールに則れば、基本的には自由につけることができます。しかし、予約語や、組み込み関数と同じ名前をつけるのは避けましょう。
Pythonには、「def、class、True、False、import」など、30個以上の予約語があります。詳しくはこちらのキーワードを確認しましょう。
わかりやすく便利な文字列が予約語にはたくさんあります。
しかし、不用意に使うことでコード内で衝突が起こり、不具合を起こす可能性も無いとは言い切れません。こちらのサンプルコードを見てみましょう。
num = 100 type = float print(type(num))
type関数を使って型を確認すると、num=100の場合には、int型だと表示されるでしょう。しかし、typeという変数にfloatと代入してしまうと、このような実行結果になります。
実行結果
100.0
本当であればnumの型(ここではint型)が表示されるされるはずですが、実際には違う結果が表示されていますね。
これはtypeという変数にfloatという関数を入れてしまったから起こった問題です。エラーにはなりませんが、重大なバグの原因にもなり得るコードです。
このようなことを防ぐためにも、他の変数名などと被らない名前を使うように心がけましょう。
まとめ
Pythonの変数について紹介してきました。プログラミングをはじめてすぐに学ぶ事の多い変数ですが、意外にも奥が深いことがわかりましたね。それぞれの言語によって扱いは変わります。
使っているプログラミング言語の流儀にあった、適切な変数の使い方を心がけましょう。
なお、今Pythonを学習している方は以下の記事もどうぞ。
はじめてPythonを使う方でもわかりやすいように、Pythonでできることやその学習法などを中心にまとめています。
復習にも使えると思いますので、ぜひ一度ご覧になってみてくださいね。
【Python 入門完全攻略ガイド】