Python/変数と代入

出典: フリー教科書『ウィキブックス(Wikibooks)』
ナビゲーションに移動 検索に移動

変数とは[編集]

pythonでいう「変数」(へんすう)とは、数値などのデータを入れるための箱(はこ)のようなものです。あるいは、その箱のなかに入っている、数値などのデータの事です。

変数には、ほかの変数との区別のために、名前をつける必要があります。

変数の定義で悩むよりも、コードをみたほうが分かりやすいと思うので、では、コードを見ましょう。

(コード)

a=5
b = a + 2
print(b)

上のコードを実行すると、print()の出力として「7」が表示されます。

さて、上のコードでは、「a」や「b」が変数です。変数aには5が入っています。変数bには7(=5+2)が入っています。

なお、変数の意味を、「箱に入っている数値のこと」であると考える場合もあるので、その場合には、「変数aの値は5である。変数bの値は7である。」のような言い回しになります。

変数の型[編集]

ここまでの例では、数学の「変数」と、プログラミングの「変数」とは、似たような意味です。しかしプログラミングでは変数には文字列のように数値ではないものも入れることができます。[1]なので、数学でいう「変数」と、プログラミングでいう「変数」は、意味が少し違うので、気をつけてください。[2]

Pythonのプログラミングでは、変数名がそのまま変数そのものを意味します。つまり、わざわざ変数そのものと変数名を区別する必要はありません。(なお、ほかの多くのプログラミング言語でも同様に、変数名が、その変数そのものを意味することになるプログラミング言語が、ほとんどでしょう。)

Pythonで変数を使うとき、使うところでいきなり変数名を書くだけで、特別な手続きをすることなく使うことができます。このような言語のことを動的型付け言語と言います。[3]

変数には「型」というものがあり、Pythonの場合は最初に代入した値で型が決まります。Pythonでの型には

  • 実数型
  • 整数型
  • 文字列型
  • リスト型

などがあります。

代入[編集]

pythonでは「=」記号の意味は、「左辺の変数に右辺の内容を代入する」と意味です。数学の等号とは、意味がちがうので、気をつけてください。

たとえば、次のコードでは、

a = 3
a = a + 1
print(a)

3行目のprintによって表示されるのは、「4」です。

上のコードでは、まず1行目のa = 3」によって、まず、aに3が代入されます。 つづいて、2行目のa = a + 1」では、まず右辺の計算が先に行われるので 3+1 (=4) が行われ、その結果が左辺に代入されます。よって、aの内容が4に置き換わります。

変数名はべつに1文字でなくてもかまいません。 例として、上記のプログラムとは、別のプログラムを、下記に例にします。

hensuu = 6
iremono = hensuu + 4
print(iremono)

このコードの「hensuu」や「iremono」が、変数です。

変数hensuuの変数名は、「hensuu」です。変数iremonoの変数名は、「iremono」です。

このように、変数名と変数そのものを区別する必要は、ありません。

なお、上のコードを実行すると、出力として「10」が表示されます。

変数の名前には、そのプログラムの使い道にもとづいた名前をつけると、わかりやすくなります。

たとえば

nedan = 800
kosuu = 3
syuppi = nedan * kosuu
print(syuppi)

とコードを見るだけでも、「おそらく、このプログラムは、値段が800円のものを3個買うときの出費の金額をもとめるためのプログラムだろう」と、見ただけで予想がつきます。

さて、変数にマイナスの数を入れても、かまいません。数値の前に「-」(マイナス記号)をつけるだけで、マイナスの数になります。

a = -3
b = a + 4
print(b)

なお、上のコードを実行すると、出力として「1」が表示されます。

文字列の入った変数[編集]

pythonの変数には、文字を入れることもできます。

a=5
b = "こんにちは。"
print(b)

上のコードを実行すると、出力として「こんにちは。」が表示されます。

文字列を使うときは、ダブルクォーテーション記号(" ")で囲うことにより、文字列として認識します。


a=5
b = "ABCD"
print(b)

上のコードを実行すると、出力として「ABCD」が表示されます。


a=5
b = "a"
print(b)

上のコードを実行すると、出力として「a」が表示されます。

この例でわかるように、変数aと文字列"a"は別物として認識されます。 b = "a"とは、「文字列「a」を変数bに代入しろ」という意味です。

「a」のような英語の文字でも、ダブルクォーテーション記号(" ")で囲むことにより(「"a"」とすることにより)、変数ではなく文字列として認識するので、上のような結果(printの出力として「a」が表示)になります。


b = "こんにちわ。"
print("b")

上のコードを実行すると、出力として「b」が表示されます。「こんにちわ。」は表示されません。

「print("b")」とは、「文字列「b」を出力しろ」という意味です。変数bの出力ではありません。


a=5
b = "a"
print("b")
print(b)

上のコードを実行すると、出力として「b」と「a」が表示されます。


a=5
b = "a"
print("b")
print(b)
print(a)

上のコードを実行すると、出力として「b」と「a」と「5」が表示されます。


変数名[編集]

pythonでは、変数名の大文字と小文字とを、原則的に区別します。

このため、たとえば「print("あああ")」を「PRINT("あああ")」と書くと、エラーになり、実行できないです。

また、変数名につかえる文字として、直接入力の英語文字と、直接入力の数字、アンダースコア「_」が、変数名の文字として使用できます。 しかし、数字から始まる語句は、変数名には、できないです。

(コード例)

A=1
a=3
print("A=",A)
print("a=",a)

(実行結果)

A= 1
a= 3

また、変数名に、「if」は付けられません。なぜなら、条件分岐の判断をするときに if を使うので、変数名にifを使っても、実行がエラーになります。

「if」のように、変数以外の命令で用いている語句は、変数名には利用できません。このように、変数に利用できない語句のことを予約語といいます。次にしめす予約語は、変数名には使用できないです。

(予約語)

and as assert break class continue def del elif else except exec finally for global import is lambda not or pass print raise return try while with yield

上記の予約語は、プログラミング用のエディタであれば使おうとすると色を変えて教えてくれるので、覚えなくてもかまいません。

なお、「ifaaaa」のように、予約語を部分的にふくむ場合は、変数名として利用可能です。

注釈[編集]

  1. ^ リスト、タプル、辞書については後で取り扱います。
  2. ^ 数学の「変数」には、中学高校でならうような普通の数学の場合には、数学の「変数」には、文字列は入れられません。
  3. ^ 一方、変数を使うときあらかじめ宣言して用意しておかなければならないようなプログラミング言語もあり、こちらは静的型付け言語と言います。