🐯

【Python入門】 変数ってなに?

2021/09/04に公開

今回の内容は超初心者でも理解できるように丁寧に書きました。

分かる人にとっては、まわりくどい説明や言い回しをしているので、イライラすると思います。中級者以上は読むことをオススメしません 🙃



こちらの記事を読んでからの方が、理解がしやすいと思います。併せてご覧ください。↓
https://zenn.dev/nekoallergy/articles/0adf4d57acf9b4

皆さんの理解が一歩でも進むと嬉しいです。


Created by NekoAllergy

変数ってなに?

変数とは、値を入れておく箱です。

この箱に値を入れておくと、値が保存されるので、後で使いたいときに使うことができます。変数はプログラミングをする上でとても重要な考え方です。

変数のいいところ

変数を使うと、便利なことがたくさんあります。

このあと解説していきます。
とりあえず今は「こんないいことがあるんだな〜」と頭の片隅で覚えておいてください。

変数を作ってみる

変数(箱)を作ってみましょう。
Python では次のようにコードを書くと変数を作ることができます。

変数(箱)の名前 = この箱に入れておきたいもの

変数の名前は自分で決めることができます。なんでもいいです。

たとえば、次のようにコードを書くことで、number という名前の変数を作ることができます。

number = 3

上記の例では number という変数(箱)を作って、その中に 3 を入れています。

「このあとのプログラムで 3 っていう数値を使いまわしたい!」って時に役立ちます。今は簡単な例なので、変数の良さがあまり分かりませんが、プログラムが複雑になってくると、とても便利に使うことができます。


変数が作られると、その変数をプログラムの中で自由に使うことができます。
変数の中身を表示したい場合、print 関数を使います。

number = 3 #number という変数を作って、その中に 3 を入れる
print(number) #print()という関数を使って、(かっこの中)にあるものを表示する
結果
3

上記のプログラムを実行すると、【  3  】という結果が表示されます。
print(number)と書いたとき、number3 という数値に書き変わって、出力されています。
このように、変数に入れた値は保存されているので、後で使いたいときに使うことができます。


補足:箱はいつ作られるのか

python では、箱に何かを入れた時に、その箱が作られます。
つまり、上記のような コードを書いた瞬間に、その箱が出現するイメージです。

補足:たとえばどんな値を入れるのか

たとえば、変数には次のように値を入れることがあります。

age = 30
height = 165
weight = 55
print(age)
print(height)
print(weight)
結果
30
165
55

age という変数に 30、height という変数に 165、weight という変数に 55 を入れています。これらはそれぞれ、年齢(age)、身長(height)、体重(weight)を表しています。

このように、「この値、後でもう一回使うかもな〜」とか「この数値には名前をつけた方が後々わかりやすいな〜」って場面が出てきます。そのような値は変数に入れて管理することが重要です。使うたびに書く手間を省くことができて便利です。

補足:代入って?

変数に値を入れることを、代入(だいにゅう)と言います

  • 「変数 age に 30 代入する」
  • 「height には 165 が代入されていますね」
  • 「weight には 55 を代入してっていったよね?」

ってノリで使います。


変数には種類がある

変数という箱の中に入れることができる値は、 8 つの種類に分けることができます。

この変数の分類のことを 型(かた) と呼びます。ぞれぞれ性質が異なっています。

型の名前 入れる値(例)
1 整数型 (int) num = 12
2 浮動小数点型 (float) pi = 3.14
3 文字列型 (str) name = "NekoAllergy"
4 ブール型 (bol) is_active = True
5 日付型 (datetime) today = datetime.date.today()
6 リスト型 (list) temp = [25, 24, 27]
7 タプル型 (tuple) temp = (25, 24, 27)
8 辞書型 (dictionary) temp = {"day1":25, "day2":24, "day3":27}
num = 12 という変数の場合
変数の名前 :num
変数の中に入っている値 :12
変数の型 :整数型(int 型)


今回は ① 整数型、② 浮動小数点型、③ 文字列型、④ ブール型について説明します。

① 整数型


さっき紹介したやつです。
変数に整数が入っていると、整数型(int 型)と呼ばれます。

記述例
num = 12

② 浮動小数点型


整数と違って、小数点が含まれていると、浮動小数点型(float 型)と呼ばれます。

記述例
pi = 3.14

③ 文字列型


変数の中には数字だけでなく、文字も入れておくことができます。

記述例
name = "NekoAllergy"
hobby = 'runnning'

変数に文字を入れる時は、その文字を""(ダブルクォーテーション)で囲みます。
' 'シングルクォーテーションでも OK です。

変数の中身を見てみましょう。

print(name)
print(hobby)
結果
NekoAllergy
runnning

出力されるときは、""は無くなっています。

文字列って?

プログラミングの世界では、文字が集まったものを文字列(もじれつ)と呼びます。

違いは、1 文字か、2 文字以上(単語とか文章)か、という点です。

文字: "a", "あ"  など1文字
文字列: "abc", ”あいう", ”hello world !”  などの単語や文章

※ 1 文字でも文字列と呼ぶことがあります

④ ブール型


True(トゥルー) か False(フォールス) だけを入れる変数もあります。

どんな時に役に立つの?

プログラミングでは、はい/いいえ、ある/ない、1/0、ON/OFF、真/偽、OK/NG などの Yes/No の判断をする機会はとても多いです。
そんな時に、この TrueFalse を変数に入れます。

記述例
使い方の例
is_active = True #今アクティブな状態だよ〜って感じです
is_checked = False #まだチェックしてないよ〜って感じです
間違った例
is_active = "True" #ダブルクォーテーション("")を付けたら文字列になってしまいます。

True/False は文字列ではなく、python に決められている特別な記号です。
ブール型の変数の名前は is_ で始めることが多いです。


実は、、、

実は、型にはもっとたくさんの種類があります。分類するときの考え方も違います。
今回は理解しやすいように、よく使う 8 つに絞って紹介しましたが、詳しく知りたい方は、公式ドキュメントなどを参考に見てください。

変数を作るときはルールを守ろう

変数には自由に名前を付けることができます。
ただし、以下のルールを守りましょう。守らないとエラーになります。

変数に名前をつけるときのルール

  1. 使用できる文字は、アルファベット(a ~ z、A ~ Z)、数字(0 ~ 9)、アンダーバー(_)など
  2. 大文字と小文字は区別される
  3. 予約語(既に python での使い方が決まっている単語)は使えない
  4. 1 文字目に数字(0 ~ 9)は使えない
OK な例
num01 = 50 #アルファベットと数字が使える
my_job = "programmer" #記号はアンダーバー(_)だけ使える
MY_JOB = "designer" #大文字と小文字は別モノとして扱われる
NG な例
num\*/-01 = 50 #アンダーバー(_)以外の記号は使えない
10name = "NekoAllergy" #1 文字目に数字は使えない
for = "hoge" #予約語は使えない


補足:変数名には意味がある英単語を使おう

以上のルールを守った上で、変数名には意味がある英単語を使用しましょう。なぜなら、そのコードを見た他の人や、見返した自分自身が理解しやすいからです。

悪い例(何を意味しているのか分からない)
a = 200
b = 0.1
良い例(変数名から意味や使い方を推測できる)
price = 200
tax = 0.1

a=200, b=0.1 といった変数名ではなく、price=200, tax=0.1 と書くことで、「あ、この変数は価格と消費税率を表しているんだな」と推測することができます。

補足:予約語ってどんなのがあるの?

予約語とは、既に python での使い方が決まっている単語のことです。
以下の 35 個の予約語は変数名として使うことはできません。

Pythonの予約語
False None True and as assert async await break class
continue def del elif else except finally for from global
if import in is lambda nonlocal not or pass raise return try while with yield
補足:1 文字目のアンダーバーは使う時を考えよう

変数の 1 文字目にはアンダーバーを使うことができます。
しかし、1 文字目にアンダーバーが付いている変数は「特別な用途」で使われるケースが多いです。
詳しい説明は省きますが、変数の 1 文字目にアンダーバーを使うことは避けたほうが良いです。

避けたほうがいい例
_num = 50
_my_hobby = "programming"
__is_flag = False
補足:大文字は使う時を考えよう

python 上級者は【定数】を大文字で書く慣習があります。定数とは、内容を書換えることがない箱です。

python に変数の書き換え自体を禁止する仕組みはないので、エラーは起きません。ただ、定数を大文字で書いていると、分かり易いですし、上級者っぽく見られます。余裕があれば、プログラム内で書き換える予定はない変数を大文字で書いてみましょう。

MY_AGE = 23
MY_NAME = 'nekoallergy'
補足:実は変数名に日本語も使えます

変数名には日本語(ひらがな、カタカナ、漢字)を使うこともできます

年齢=23
身長=165
体重=55
print(年齢)
print(身長)
print(体重)
結果
23
165
55

しかし、変数名に日本語を使うことはオススメしません。
なぜなら、他国の人が理解できませんし、日本語のフォントが他人の環境で利用できるとは限らないからです。
基本的に変数名には半角の英数字を使うほうが安全でしょう。そのほうがかっこいいです。


変数の中身は書き換えられる

一度作った変数は中の値を書き換えることができます。

name = "Neko" #最初にNekoを入れて
print(name) #出力!

name = "NekoAllergy" #その後にNekoAllergyで上書きする
print(name) #出力!
結果
Neko
NekoAllergy

print 関数では、2 回とも変数 name の中身を表示しようとしています。

  • 1 回目の print 関数では、直前に書いた name = "Neko"により、Neko と出力されます。
  • 2 回目の print 関数では、直前に書いた name = "NekoAllergy"により、NekoAllergy と出力されます。

このように、一度作った変数は、中の値を書き換えることができます。


補足:型が違っていても OK です

入れ替えた時に、型は一緒でなくても大丈夫です。

var = "Neko" #文字型を入れて
print(var)

var = 123 #整数型を入れて
print(var)

var = True #ブール型を入れる
print(var)
結果
Neko
123
True

その都度、型が勝手に変わってくれます。

補足:変数を変数に移す

既に作った変数の中身を他の変数に入れることもできます。
以下のように書くと、同じ値をもった変数を作ることができます。

a = 10 #変数aに10を代入
b = a #変数bに変数aの内容を代入

print(a)
print(b)
結果
10
10

このように変数 a の内容を変数 b に入れることができました。

補足:厳密には、、

厳密には箱の中の値を書き換えている訳ではありません。

Python の変数名は値を入れておく場所(箱)の名前ではなく、ラベルのようなものです。すでに名前がある変数に新しい値を代入すると、変数は新しい値の場所を指し示すようになります。
下記はイメージ図です。

もしこの説明で分からなくなってしまったら、忘れて大丈夫です。この仕組みを普段あまり意識することはありません。

変数は値を入れる箱で、その中身を書き換えることができる、という認識で OK です。


まとめ

変数は python だけでなくプログラミングの基本的な考え方です。使い方をマスターすれば、自由にプログラムを書くことができます。

基礎を正しく身につけて、次のステップに進みましょう!




Python の基礎を本にまとめています。中身を覗いていただくと とても嬉しいです。↓
https://zenn.dev/nekoallergy/books/python-basic

機械学習をもっと詳しく

ねこアレルギーのAI

ねこアレルギーの AI
YouTube で機械学習について発信しています。お時間ある方は覗いていただけると喜びます。





Created by NekoAllergy

Discussion