こんにちは!ゆーや(@yuyamanm118712)です。
こちらのページでは完全独学でWebプログラマとなった私が
「変数」に関して必要な情報をまとめています。
「変数」はプログラミングには欠かせない内容なのでしっかり理解してほしいでス。
最後までじっくりと読んで、一緒に学習にしていきましょう。
なお、ご指摘・ご質問はTwitter(@yuyamanm118712)のDMまでよろしくお願いします。
変数とは
Pythonだけに限らず、プログラミングにおける「変数」とは、値にただラベリングする(名前を付ける)こと!
名前を付けておくことで
- コードを書くこと自体がめちゃくちゃ楽になる。(同じことを繰り返す時とかめちゃくちゃ長い値とか)
- コードの修正がめちゃくちゃ楽になる。
- 見ただけでどんな値かイメージできる。
など様々なメリットがあります。
それぞれのメリットについては、以降の説明の中で解説していきます。
変数を定義(=初期化)する
変数は定義しないと使えません。
運営者
よし!今日から「name」って書いたら「ゆーや」ってことにしよう!
といくら願っていても
print('My name is ', name)
# NameError: name 'name' is not defined (nameが定義されていません。)
上記のように「name ‘name’ is not defined」とエラーを吐かれます。
なので次のように定義しましょう。
変数名 = 値
「name」を「ゆーや」にしたかったら
name = 'ゆーや'
print('My name is ', name)
# My name is ゆーや
とします。1回定義してしまえば
name = 'ゆーや'
print('My name is ', name)
# My name is ゆーや
print('こんにちは', name)
# こんにちは ゆーや
print('ニーハオ', name)
# ニーハオ ゆーや
それ以降、「name」は使い放題です。
変数のメリット①
こう思った方はいるでしょうか。
「name」じゃなくて「ゆーや」って打てばいいじゃん。。
そんな方はこう仮定してみましょう。
名前が「ゆーや」でなく、「パブロ・ディエゴ・ホセ・フランシスコ・デ・パウラ・ホアン・ネポムセーノ・マリーア・デ・ロス・レメディオス・クリスピン・クリスピアーノ・デ・ラ・サンディシマ・トリニダード・ルイス・イ・ピカソ」だったら?
もし、素直に書いてしまったらコードがピカソの名前で埋まってしまいます。
これがメリットの1つ
コードを書くこと自体がめちゃくちゃ楽になる。(同じことを繰り返す時とかめちゃくちゃ長い値とか)
の理由です。
変数のメリット②
2つ目のメリットを知った当時の僕は
変数って最高だな…
と感じました。
こういうシーンを考えて見ましょう。
「name」=「ゆーや」として、大きなシステムを作りました。しかし、「ゆーや」は「完全独学Pythonマン」に改名します。システムを修正しましょう。
もし、変数を使っていない場合、
print('My name is ', 'ゆーや')
print('こんにちは', 'ゆーや')
…(100行くらい続く)…
print('ニーハオ', 'ゆーや')
このすべての「ゆーや」を「完全独学Pythonマン」に修正しなくてはいけません。
しかし、変数を使っていたらどうでしょう。
name = 'ゆーや' # ココを'完全独学Pythonマン'に修正するだけ
print('My name is ', name)
print('こんにちは', name)
…(100行くらい続く)…
print('ニーハオ', name)
修正箇所は1か所で修正漏れも絶対にありません。
使わない手はありません。
(ちなみに他のプログラミング言語では「定数」という考え方がありますが、Pythonにはありません。)
定義した変数に値を再代入
次は一度定義した変数に値をもう一度代入するとどうなるか検証します。
x = 10
x = 20
print(x)
# 20
このように変数は最後に代入した値を記憶しています。
また、データ型も関係ありません。
x = 10
x = 'hello'
print(x)
# hello
変数に他の変数の値を利用して代入する
変数の値は、別の変数を定義する際も使うことができます。
x = 10
y = x + 5 # 10 + 5 として計算される
print(y)
# 15
もちろん、自分自身を利用して変数を再代入することも可能です。
x = 10
x = x + 20 # 10 + 20 として計算される。
print(x)
# 30
# xは10でなくなってしまうことに注意
変数の命名規則
まず、エラーとなってしまう絶対回避しなくてはならないルールを上げます。
- 1文字目に数字(0~9)は使用してはならない
- 予約語は使用できない
それぞれ解説します。
1文字目に数字(0~9)は使用してはならない
実際にエラーが出るか見て見ると
# 2name = 'ゆーや'
# ^
# SyntaxError: invalid decimal literal
あからさまに「先頭の数字が悪い!」といったエラーが出ます。
予約語は使用できない
予約語とは、「Pythonを使用する上ですでに使用方法が決まってしまっている文字列」です。
例えば
not
などは、Pythonでは「条件を否定するために使用するもの」なので変数の定義では使えません。
not = 'ゆーや'
print('My name is ', name)
# SyntaxError: invalid syntax
予約語の一覧を上げることは可能ですが、筆者としては
覚える必要は全くない
と考えます。
勉強していくうちに使ってはいけないものはわかるようになります!
興味のある方は、ぜひ調べてみてください。
オススメの書き方
pep8には次のように書かれています。
関数の名前は小文字のみにすべきです。また、読みやすくするために、必要に応じて単語をアンダースコアで区切るべきです。
変数の名前についても、関数と同じ規約に従います
https://pep8-ja.readthedocs.io/ja/latest/
PEP8とは「Pythonにおけるスタイルガイド」です。
書き方に困ったら、一読することをお勧めします!
おまけ:変数の削除(del)
おそらくほとんど使うことはないと思いますが、一応定義した変数を削除することは可能です。
del 変数名
とすると実は削除できます。
name = 'ゆーや'
print('My name is ', name)
# My name is ゆーや
del name
print('My name is ', name)
# NameError: name 'name' is not defined
変数を定義するとメモリを使うことになるので、メモリがいっぱいになってしまうようなことがあれば、使うことを検討してはいかがでしょうか。
コメント