本記事はプログラミングの初心者のためにPythonの基礎をまとめた記事です。
Pythonの導入から変数・クラスなど一通りの基礎について紹介しています。
本記事を繰り返し読みプログラミングを実践して行けばプログラムの基本的な考え方を理解することができます。
目次
Pythonを始める方法
Pythonは公式サイトからインストーラーをダウンロードして実行するだけで使えるようになります。
Windows・Macどちらでも実行可能です。
また、スマホでもPythonの編集と実行を行うことができます。
Pythonの始め方については「Pythonプログラミングの始め方まとめ」で説明しています。
Pythonについて学ぶ場合は「Pythonの公式ドキュメント」もあわせてお読みください。
関連記事>>Python超初心者が最初にやること3つ
Pythonと変数の基本
変数は値を一時的に入れるための箱のようなものです。
プログラムの処理によって値が変わるため、変数と呼びます。
対義語としては「定数」があります。こちらはプログラムの処理中に値が変わることがないため、定数と呼びます。
変数の宣言と定義
変数を使用するためには使う前に宣言し、定義するのが基本的なルールです。
宣言のルールや型はプログラミングによって異なります。Pythonの場合は比較的緩く宣言がなくても変数を使用できます。
変数の代入
変数に値を設定することを代入と呼びます。
# aに1を代入する
a=1
のように記述します。
プログラムで使用する"="は数学で使う等号とは異なります。
「a=1」は「aという変数に1という値を設定する」という意味です。
文字列を使う時はシングルクウォートまたはダブルクウォートでくくります。
a="あいうえお"
# シングルクウォートでもOK
b='あいうえお'
型にあった値を代入しないと意図しない値となるためその後の処理で思わぬ不具合を生む可能性があります。
変数の参照
値を設定した変数は実際の数字や文字列のように扱うことができます。
変数の参照の例は以下の通りです。
◆変数を参照して画面に表示する
a = 1
b = "あいうえお"
# 値の内容の表示。「print」は値を画面に表示する関数
print(a)
print(b)# 出力される内容
1
あいうえお
◆変数を参照して計算する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | a = 1 b = 2 # 足し算 a + b # 出力される内容 3 # 数字を使って計算することも可能 a + 1 # 出力される内容 2 # 引き算 b - a # 出力される内容 1 # 掛け算 a * b # 出力される内容 2 # 割り算 4 / b # 出力される内容 2.0 # 計算結果を代入する c = a + b c # 出力される内容 3 |
◆変数が値が入っているかチェックしよう
値が設定されていない変数を参照した場合はエラーとなります。
変数は使う前に必ず値をチェックすることが大切です。
たかが設定漏れと思うかもしれませんが、ちょっとしたミスがシステムに深刻なエラーを生み出す場合もあります。
私がITエンジニアの頃も値の設定漏れによるシステムトラブルを何度も経験しました。
「変数を使う前に値が入っているかチェックする」ことを心がけましょう。
変数と型の基本
変数を宣言する場合に同時に変数の型を指定します。
型は変数に「どんなものが入るか」・「どんな大きさのものが入るか」ということを示すためのものです。
"あいうえお"などの文字列が入るstr型、"123"などの数字の入るint型、"['a','b','c']"のように複数の値を管理できるリスト型などが代表的な型です。
◆str型
"abc"や"あいうえお"などの文字列が入る型です。
◆int型
"1","10"などの整数が入る型です。
◆リスト型
"[1,2,3]"や"['a','b','c']"など、複数の値をリスト化できる型です。
リスト化された変数は"a[0]"のように指定することでリストのそれぞれの値を参照することが可能です。
括弧内の数字の'0'をインデックスと呼びます。
"['a','b','c']"というリストを定義した場合、インデックスと値の関係は以下のようになります。
0 | 1 | 2 |
---|---|---|
a | b | c |
なお、pythonは型を自動で判別するため、宣言や型の指定をしなくても使用することができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | # どんな値でも自動でも代入可能 # str型 a = "あいうえお" print(a) # 出力値 あいうえお # int型 b = 1 print(b) # 出力値 1 # リスト型 c = ["a","b","c"] print(c) # 出力値 ['a', 'b', 'c'] # c[0]〜c[1]を指定することでそれぞれの値を参照可能 print(c[0]) # 実行結果 a print(c[1]) # 実行結果 b print(c[2]) # 実行結果 c |
変数とエラー
型が不一致の場合エラーとなります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # str型 a = "あいうえお" print(a) # 出力値 あいうえお # int型 b = 1 print(b) # 出力値 1 # 異なる型同士での計算は不可 a + b |
◆計算の実行結果
1 2 3 | Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: can only concatenate str (not "int") to str |
型不一致については「can only concatenateの対処方法〜Pythonエラー対策〜」をお読みください。
存在しないindexを指定すると参照エラーとなります。
1 2 3 4 5 | # リスト型 c = ["a","b","c"] # index print(c[3]) |
◆実行結果
1 2 3 | Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: list index out of range |
関連記事>>Python初心者が理解しておくべき変数の3つの役割
Pythonと関数の基本
「変数も箱のようなもの」と説明しましたが、変数は一つの値を詰め込むものであるのに対して関数は「特定の目的を実現する為の一連の処理」が格納されています。
例えば画面に表示できる関数として「print」があります。
# 変数aの値を表示する
print(a)# 出力結果
3
「print(a)」の括弧の中で使用している「a」を引数と呼びます。
引数は関数を呼び出す時に呼び出し元から渡す値であり、この値によって関数内の処理を変えることも可能です。
引数がない関数もあります。
また、関数から返却される値を「戻り値」と呼びます。(返り値、リターン、リターン値などとも)
戻り値は関数を実行した結果出力された値です。
print関数のように戻り値がない関数もあります。
独自の関数を定義できる
関数は元々Pythonに備わっている関数だけではなく、独自に新しく関数を定義することが可能です。
独自の関数を定義するメリットは「呼び出すだけでその処理を簡単に実現できる」ことと「重複する処理を削減できる」、「修正は一箇所で良い」ことなどがあります。
関連記事>>Python初心者が理解しておくべき関数の3つの役割
関数の定義と呼び出し
独自の関数を使う場合は変数と同様に定義が必要となります。
関数の定義はプログラミング言語によってルールが異なります。
Pythonの場合”def”を使って定義します。
2つの値を足す関数「addition」を定義して呼び出す例です。
1 2 3 4 5 6 7 8 9 10 11 12 | # 関数の定義 def addition(a,b): c = a+b return c # 引数に「1」と「2」を指定して関数呼び出し # 「r」は戻り値です r = addition(1,2) # 戻り値の値をチェック r # 出力値 3 |
1関数=1機能が原則
1関数には1機能が原則です。
複雑な機能を持たせると何を行うための関数かが曖昧になってしまいます。
何をするか曖昧な関数は使われませんし、その関数の機能に気づかずに似たような関数が作られてしまう可能性もあります。
関数には複数の機能を持たせないようにしましょう。
Pythonと制御文の基本
プログラムはただ直接的に処理をするだけでなく、条件によって処理を分岐したり、同じ処理を繰り返し行うなどの動きも可能です。
制御文は条件分岐や繰り返しの条件づけを行うための構文です。
制御文の種類
制御文の種類としては主に「条件分岐」と「繰り返し処理」があります。
条件分岐
条件によって処理を分ける制御文です。代表的な条件分岐は「if文」、「else文」、「elseif文」です。
Pythonにはありませんが、他のプログラミング言語で使用できる分岐条件文として「switch文」があります。
◆if文
もし〜なら実行する
条件と一致したら文章を実行します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | a = 1 b = 0 # aが0より大きければ実行する if a > 0: # Pythonでif文を記述する場合は字下げする # 字下げした処理は条件に一致した場合のみ実行する b = 2 # 字下げをやめた時点で条件分岐は終了 print(b) # bの出力値 : 2 # 条件を重ねることも可能 a = 1 b = 0 if a > 0: b = 1 if a > 1: # 二つ目の条件はさらに字下げする b = 2 print(b) # bの出力値 : 1 # 一つ目の条件には一致したが、二つ目の条件には一致しなかった為、bの値は1のまま |
◆else文
else文は判定文とセットで使用します。
条件と一致しなかった場合にelseの処理を実行します。
1 2 3 4 5 6 7 8 9 10 | a = 1 b = 0 # 1より大きい場合に処理を実行 if a > 1: b = 1 else: # 1より小さい場合はこちらの処理を実行 b = 2 print(b) # bの出力値:2 条件に一致しなかった為、elseの処理が実行された |
◆elseif
if文と組み合わせて活用する判定文です。前の条件に合わなかった場合に次の条件を指定する方法です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | a = 2 b = 0 # aと一致するか?「==」は値の一致を意味する if a == 0: b = 0 # 「elif」と記述 # ifの条件と一致しなかった場合に続けてこちらの判定を実行 # 前の条件が一致した場合は実行しない</div> elif a == 1: b = 1 # elseifは複数指定可能 elif a == 2: b = 2 # else文も併用可能 else: b = 3 print(b) # bの出力値 : 2 「elif a == 2」の条件と一致 |
◆制御演算子
「==」などの判定する時に使用する演算子を制御演算子と呼びます。
判定演算子の一列
== : 左辺と右辺が一致
!= : 左辺と右辺が不一致
> : 左辺が右辺より大きい
>= : 左辺が右辺以上
< : 左辺が右辺より小さい
<= : 左辺が右辺以上
繰り返し文
◆for文
for文は配列に数だけ処理を繰り返す関数です。
1 2 3 4 5 6 7 8 | a = 0 # rangeで指定した分だけ処理を繰り返す # rangeは指定した長さのリストを作成する関数 for i in range(10): a +=1 print(a) # aに+1を10回繰り返した # 出力値:10 |
◆while文
while文は条件が一致している間処理を繰り返す繰り返し文です。
処理を行う前にループを行うかの条件のチェックする為、一度も処理を行わない可能性があります。
1 2 3 4 5 6 7 8 9 10 | a = 0 b = 0 # aが10を超えたら処理終了 while a < 10: a = a + 1 b = b + 1 print(b) # bの出力結果:10 # (11回目は処理されないので+10) |
Pythonとオブジェクトの基本
概念のことをクラス、実体のことを「オブジェクト」または「インスタンス」と呼びます。
◆概念(クラス)
型を定義するための情報を概念(クラス)と呼びます。
・整数型
・文字列型
・リスト型
◆実体(インスタンス)
"a","1"など実際の値を実体(インスタンスまたはオブジェクト)と呼びます。
'a'
'1'
[1,2,3]
メソッドとは?
メソッドとはインスタンスが持つ機能であり、関数と同じように特定の目的を実現するための一連の処理が書かれたものです。
関数と異なる点はインスタンスと結びついている点です。
メソッドはインスタンスの後ろに「.」をつけて接続する形で記述します。
# 出力値
[1, 2]# メソッドは「a」という変数に「.」をつけて使用する
# 「append()」はリストに値を追加するメソッド
a.append(3)
print(a)
# 出力値
[1, 2, 3]
# 「count()」はリストの中の特定の値の数を出力するメソッド
b = a.count(3)
print(b)
# 出力値
1
◆メソッドの副作用
メソッドを実行したことによってオブジェクトの状態が変わってしまうことを「副作用」と呼びます。
具体的にはインスタンス内の変数の値などが変わってしまうなどです。
上記の例で使用した「append()」は実行後にリストの値が変化してしまう為、副作用のあるメソッドです。
「count()」は副作用のないメソッドです。
Pythonとクラスの基本
クラスは変数の型における「概念」と「実体」のうち「概念」に当たります。
クラスの役割は複雑な処理をわかりやすい処理にすることです。
クラスを使うことで目的ごとに変数や関数をクラスにまとめることができます。
目的ごとにまとめることで変数や関数の意図が明確になり、プログラムを管理しやすくなります。
クラスの定義とインスタンスの生成
クラスの定義
クラスの定義の記述は以下の通りです。
1 2 3 4 5 6 7 8 9 10 11 12 | # class名はキャメルケースで定義 class TestClass: # コンストラクタ def __init__(self,x,y): self.a = x self.b = y # メソッドを定義 def addition(self): return self.a + self.b def subtraction(self): return self.a - self.b |
"__init__()"という部分はコンストラクタと呼ばれるものであり、インスタンスを生成した時に実行されるメソッドです。
ここではインスタンス化する時に毎回実行したい処理を定義して置ける他、インタンス内の変数の定義や初期化も行うことができます。
コンストラクタで定義された変数は他のメソッドで後から上書きできます。
◆キャメルケース
キャメルケースはプログラミングで関数名・変数名・クラス名などを記述する時の命名規則の一つです。
"test class"という名前をキャメルケースで定義する場合は"TestClass"と単語の先頭を大文字にして記述します。
Pythonのクラスはキャメルケースで定義するのがルールです。
クラスのインスタンスを生成する
クラスのインスタンスを生成する時は以下のように記述します。
# 第一引数は指定しない
test_class = TestClass(5,6)
print(test_class.a)
print(test_class.b)
# 出力値(引数に指定した値がセットされる)
# 5
# 6
# メソッド実行:a+bを足した値を出す(5+6)
# 第一引数は記述しない
test_class.addition()
# 出力値:11
# 変数は書き換え可能
test_class.a = 7
print(test_class.a)
# 出力値:7
# メソッド実行:aからbを引いた値を出す(a-b)
test_class.subtraction()
# 出力値:1
Pythonでは第一引数の「self」にはクラスのインスタンス自身が代入されるというルールがあります。
そのため、インスタンスを生成する時は第2引数から記述します。
メソッドを実行する場合も同様で第1引数「self」が代入されるため、第2引数から指定します。
Pythonとモジュールの基本
Pythonにおけるモジュールは「類似する分類のクラスや関数を一纏めにしたファイル」です。
モジュールには「組み込みモジュール」、「標準ライブラリ」、「外部パッケージのモジュール」、「自作のモジュール」があります。
組み込みモジュール
組み込みモジュールはPythonに最初から組み込まれているモジュールです。printなどのPythonの標準関数や変数・関数の型などが定義されています。
このモジュールに定義されている関数は特に意識せずに使用できます。
◆組み込みモジュールの使い方
a = 1
print(a)
# 出力値:1
標準ライブラリ
Pythonをインストールした時に同時にインストールされるモジュールです。
組み込みモジュールと異なり、標準モジュールに定義されているクラスや関数を使用する場合はモジュールを読み込む必要があります。
◆標準ライブラリの使い方
読み込みは「import」により行います。
import datetime
# 現在時刻を表示する
datetime.datetime.now()
# 出力値
# datetime.datetime(2018, 12, 14, 9, 58, 7, 132967)
外部パッケージのモジュール
組み込みモジュールや標準ライブラリの機能は決して多くはありません。
しかし、Pythonは「pipコマンド」によって外部パッケージをインストールすることにより機能を拡張することが可能です。
外部パッケージのモジュールはパッケージをインストールした後は標準ライブラリと同じように使用することができます。
◆外部パッケージの使い方
ターミナルより「pipコマンド」を実行します。(macOSの場合は「pip3コマンド」)
pip install [インストールするパッケージ名]
以下、「requests」という外部パッケージをインストールする例です。
・
・
(略)
Installing collected packages: idna, urllib3, certifi, chardet, requests
Successfully installed certifi-2018.11.29 chardet-3.0.4 idna-2.8 requests-2.21.0 urllib3-1.24.1
「Successfully installed」が出れば成功です。
モジュールを読み込む手順は標準ライブラリと同じです。
import requests
自作モジュール
自分で作成したソースコードもモジュールとして使用することができます。複数のモジュールを作成することも可能です。
自作モジュール作成後は標準ライブラリと同様にモジュールを読み込むことで使用できるようになります。
以下の内容を「testmodule.py」というファイル名で保存します。
◆testmodule.pyに記述する内容
1 2 3 4 5 6 7 8 9 10 11 | class TestClass: # コンストラクタ def __init__(self,x,y): self.a = x self.b = y # メソッドを定義 def addition(self): return self.a + self.b def subtraction(self): return self.a - self.b |
testmodule.pyと同じディレクトリの中に「main.py」というファイルを作成して以下の内容を記述します。
◆main.pyに記述する内容
test_class = TestClass(5,6)
test_class.addition()
◆実行結果
パッケージ・モジュール・クラス
Pythonのプログラムを管理する為の括りには「パッケージ」、「モジュール」、「クラス」があります。
いずれも目的は「類似する分類の機能をまとめてグループ化する」ことです。
◆パッケージ・モジュール・クラスの関係
1 2 3 4 5 6 7 8 | パッケージ ┣モジュール1 ┃┣クラス1 ┃┣クラス2 ┃┗関数 ┗モジュール2 ┣クラス3 ┗クラス4 |
モジュールという箱の中に複数のクラスや関数が入っている
終わりに
プログラムはいろいろなコードを書いてトライ&エラーを繰り返すことが大切です。知識を身につけたら実践をして経験を積んでいきましょう。
本記事で紹介したことはPythonの基礎の基礎ですが、本記事を繰り返し読みプログラミングを実践して行けばプログラムの基本的な考え方を理解することができます。
本記事の内容をベースにして勉強と実践を繰り返していきましょう。
PtyhonまとめTOP>>Pythonプログラミングの始め方まとめ
◆公式サイト
ダウンロードページ>>Pythonのインストーラーダウンロードページ
公式ドキュメント>>Pythonの公式ドキュメント
◆参考文献
(1)伊藤裕一 『1日で基本が身につく!Python超入門』 技術評論社 2017年
おすすめ記事Python入門者のための100日勉強方法
おすすめ記事PythonにおすすめのノートPC4選+パソコンの選び方
Pythonまとめ>>Pythonプログラミングの始め方まとめ