プログラミング言語は、変数を定義することができます。Pythonも同様です。
変数とは、コンピューターのメモリの中に一時的にデータを保存する場合に、名前をつけて入れ物として使うものです。
よくPythonの入門書などでは、変数はデータの入れ物としての箱をイメージして、そのデータの入った箱に名前を付けて、その名前を変数名と呼ぶといった説明をします。入れ物を分類するためのタグみたいな感じですかね。
実際には、言葉で説明するよりもコードを入力した方が理解できると思うので、さっそく変数を扱っていきましょう。
Pythonで変数を使ってみよう!
あるデータを変数名を付けて利用する時、新しい変数を宣言して、その変数の右側にイコール(=)を付けてデータを入力します。このイコールを使って変数にデータなど(Pythonではオブジェクトと言います)を入れることを「代入する」と言います。
具体的にやっていきましょう。
msg = "こんにちは、Python"
num = 100
print(msg)
print(num)
1行目は、msgという変数に “こんにちは、Pyhthon” という文字列を代入しています。文字列はダブルクォーテーションやシングルクォーテーションで囲んでください。2行目はnumという変数に整数「100」を代入しています。3行目、4行目でprint関数にそれぞれの変数を入れて出力します。
これをPythonファイルに記述して実行してみましょう。ファイル名はvariable.pyにしています。
ターミナルにそれぞれ結果が出力されているのがわかります。
コードをちょっと変更して、変数msgにnumを代入して出力するコードにしてみます。次のようになりますね。
msg = "こんにちは、Python"
num = 100
msg = num
print(msg)
これを実行するとどうなるでしょうか。
最初は文字列を表示したmsgですが、numを代入することで整数100を表示しています。自動的に整数と認識してくれるわけです。
型宣言は必要無いが、書くことはできる
変数を宣言するとき、プログラミングによっては変数の型(int、strなど)を合わせて宣言必要がありますが、Pythonは自動的に認識してくれるので型宣言の必要がありません。これを動的型付けと言ったりします。
ただ、プログラミングコードを見た時に変数の型があると理解しやすい面もあるので、Pythonでは変数の型も合わせて記述する方法もあります。最初のコードの例を書き換えると次のようになります。
msg: str = "こんにちは、Python"
num: int = 100
print(msg)
print(num)
msgは文字列(String)を代入しているので、コロン「:」の後に「str」と記述します。numは整数(Integer)を代入しているので、コロンの後に「int」と記述しています。
出力の結果は全く変りません。
変数の型が何なのかわからない時には、typeを使って表示させることもできます。
msg = "こんにちは、Python"
num = 100
print(msg, type(msg))
print(num, type(num))
typeに変数を入れてprintで出力しています。
これを実行してみるとこうなります。
出力の後ろ側にclassとして変数の型が表示されています。
こんにちは、Python <class 'str'>
100 <class 'int'>
1行目はstr型、2行目はint型の値であるというのがわかりますね。
型変換もやってみよう
型変換にも触れておきましょう。
num2: str = "100"
new_num = int(num2)
print(new_num, type(new_num))
num2という文字列型の変数に整数ではなく文字列としての100を代入しています。ダブルクォーテーションで囲んでいるので文字列だということはわかりますね。
これをnew_numという新しい変数に代入する時に、整数型のintを使ってカッコで括ると出力した時に、文字列であったものが整数の100として表示されます。
実行するとint型で出力されているのがわかりますね。
文字列でも数字であればこのように整数などの数値に変換することができますし、また数値を文字列のstr型に同様にして変換することができます。
これを型変換とかキャストと呼んでいます。
もちろん数字ではない文字列は数値型には変えることはできませんよ。数字ではないからわかりますよね。
変数として使える文字
変数は自由につけることができますが、見て意味がわかるものにするのがいいでしょう。ただし、変数として使える文字が決まっています。
変数として使えるのは次の文字だけです。
- 小文字の英字(a-z)
- 大文字の英字(A-Z)
- 数字(0-9)
- アンダースコア(_)
ただし、変数の先頭に数字を使うことはできません。
2wordsと言う変数を使って実行してみると、このようにエラーが出力されます。
SyntaxError: invalid syntax
構文エラーで無効な構文だということです。先頭に数字のある変数の部分は無効ですよということですね。
また、先頭がアンダースコアになっている変数はPythonでは特別な使い方になります。ここはまた理解を深めてから学ぶことにしましょう。
予約語は変数に使えない
Pythonに限らないのですが、プログラミング言語には構文を定義するために使われる単語があります。これらは予約語といって変数に使うことはできません。
Pythonの予約語には次のようなものがあります。
False, class, finally, is, return, None, continue, for, lambda, try, True, def, from, nonlocal, while, and, del, global, not, with, as, elif, if, or, yield, assert, else, import, pass, break, except, in, raise
これは、ここで必死になって覚える必要は無いと思います。学んでいくうちに自然に覚えていくことができるでしょう。こういった単語があるということだけここでは触れておけばいいと思います。
まとめ
Pythonの変数について見てきました。データを一時的にメモリ上に保存する入れ物に名前をつけておくという感じです。イコールを使って代入します。
Pythonの変数には型宣言は必要ありません。変数名は自由に付けることができますが、使える文字とルールがあります。
予約語は変数に使えませんので、気をつけましょう。