Python基礎
1.学習環境
学習環境は Google Colab という環境を使います。ブラウザ上で環境設定なく出来るからです。
基礎の構文練習ではこれで十分なので、こちらを使います。ショートカット等参考までにこちら。
※キカガクの技術ブログというサイトから使用させてもらいました。
2.演算と変数
ここは説明不要で分かる部分かと思いますので、表にまとめるだけです。
演算子 | 説明 | 優先順位 |
** | 累乗 | 1 |
* | 掛け算 | 2 |
/ | 割り算 | 2 |
// | 割り算あまりは小数点以下切り下げ | 2 |
% | 剰余 | 2 |
+ | 足し算 | 6 |
– | 引き算 | 6 |
3.データ型
Pythonで変数のデータ型の種類です。
int型 (整数) 整数とは小数や分数ではない数字のことをいいます。 |
float型 (浮動小数点数) Pythonでは小数データを浮動小数点数として扱います。浮動小数点数というのは 計算で誤差が発生することを前提とした数値データのことです。 浮動小数点数は常に近似計算であることを意識する必要があります。 浮動小数点数floatはコンピュータの内部では2進数で表現されているため 10進数の小数と厳密に同じ値を表現できない問題があります。 |
str型 (文字列) 文字列型とは、通常シングルクォート(’)またはダブルクォート(”)で囲むことにより表現できます。 文字列型は単なるテキストとして扱います。 |
bool型 (真偽値) bool型とは、真(True)または偽(False)のうち、どちらか一方となる型のことです。bool型は比較や論理演算の結果を表すために使われます。真偽値のTrueとFalseは先頭が大文字になっていますので注意してください。 |
※変数を扱う前に、関数説明
type()関数
()の中に入れたデータの型を確認することができる関数です。
print()関数
print()関数は出力を行う関数です。 print()関数を使うことで全体を囲む引用符を除去し、エスケープや特殊文字をプリントします。 つまり特殊文字やエスケープを解釈してプリントすることです。
input()関数
input()関数ではユーザーに入力を求め、その結果を変数に代入することが可能です。
len()関数
文字数を確認することができます。リストや辞書の中身の要素数も確認することができます。 リストや辞書については、この後触れます。
4.論理演算子・演算子・IF文
論理演算子
比較演算子
比較演算子は2つの値を比較してbool値を返すものです。
ブール演算子(論理演算子)
論理演算子にはand,or,notが用意されています。結果は同じくTrueまたはFalseを返します。
x and y
and は両方TrueであればTrueを返します。片方でもFalseであればFalseを返します。
(1=1 and 2=1 )= False
x or y
or の場合は片方だけでもTrueであればTrueを返します。
(1=1 or 2=1 )= True
not x
not は結果を反転したbool値を返します。
( not 1 = 2 ) = True
is 演算子と None
isは==と似たような働きをしますが、本質的には違うものです。==は左辺と右辺が等しいかどうかを判定しますが、is は左辺と右辺の値とオブジェクトが同じかどうかを判定します。通常の比較で左辺と右辺が等しいかどうかは==です。
in 演算子
in 演算子 はリストの要素であるか、また文字列中に含まれているかどうか調べるときに in演算子を使います。
含まれる場合は True を、含まれない場合は False を返します。
if 文
「もし〜ならば… 」のような条件分岐文を作成できるのがif文です。フロー制御文は全てコロン(:)で終わり、次にコードブロック(節)が続きます。Pythonのif文はコロンとインデントを使って記述します。インデントを間違うとエラーになりますので注意。今後は複数行にわたるコードを学習していくことになります。Pythonは基本的にコードを上から下へ、左から右へ、順に処理することを意識しておきましょう。
5.ループ文
While文
まずWhireの文法を確認する。Whileの後にコロンを書いて、その下にインデントを作成。
インデントをそろえて、条件式を作成する。ループは条件式がFalseになるとループ終了。
無限ループにならないように注意が必要なループ文。
for-in 文
for-in 文では、イテラブル要素(リストなど)に含まれる複数の値をひとつずつ取り出して、同じ処理を行うことができるループ処理のひとつです。whileとの違いは要素を順番に取り出した後は処理が終了するため、基本的には無限ループにならない点が異なります。
6.関数
関数とは定められた独自の処理を実行するコードの集合になります。 関数にあるデータを渡すことも可能です。 また、処理された結果を返却することも可能です。
引数
引数によって関数に対して値を渡すことができます。関数内に外部からデータを渡すことができる便利な仕組みです。呼び出し側の引数を「実引数(argument)」、関数定義側の引数を「仮引数(parameter)」といいます。引数には位置を指定したり、キーワードを指定したり、デフォルトの値を指定したりすることができます。
戻り値
返り値とも言われます。戻り値は、関数からの結果です。return の後に返したい結果を記述します。複数の戻り値が必要な場合は、リスト型、タプル型、辞書型にして戻します。タプルの場合は、戻り値をカンマ区切りで return すればOKです。戻り値がない関数も多くあります。この
return文を省略した場合には None が戻り値
になります。
7.オブジェクト指向とクラス
クラスの定義
クラスを定義(作成)します。クラス名には推奨されている先頭も大文字にするキャメルケースを使いましょう。
インスタンス化
クラスのインスタンス化は以下のような形。型やクラス宣言など必要ありません。
変数 = クラス名()
インスタンス変数
コンストラクタ内でselfで作成した変数をインスタンス変数という。
この変数はクラス変数では無くても、クラス内で使用することができる。
この部分がJavaやC#と少し異なっているので少し戸惑う。
・インスタンスから、クラス変数を呼び出せる
・インスタンスから、インスタンス変数も呼び出せる
出力結果はこうなる。
クラス継承
継承とは、あるクラスを別のクラスへ継承するという意味です。継承を利用することで、別のclassのメソッドや値を受け継ぎつつ、メソッド等を編集、追加できます。定義するclass名の後ろに継承したいclass名を()内に指定すればOKです。
変数とメソッドの継承
親クラスとして使う可能性がある場合、クラス変数をメソッドで読み込むときはインスタンス変数として読み込んでおくこと。
出力結果はこうなる。
メソッドのオーバーライド
親クラスと同じ名前のメソッドを子クラスで新たに定義することをオーバーライドといいます。
出力結果はこうなる。先ほどと同じに見えるが、Baseクラスのメソッドを消したことによって
結果が異なっていることに注目。順序が逆になったが、オーバーライドの有無でこのように結果が異なる。
子クラスに追加したメソッドに親の機能も含める
子クラスのメソッドに親クラスのメソッドの機能を追加したい場合、super()を付けて親メソッドを読み込む。
15行目でsuperを使用することで、親メソッドを呼び出して子クラスから親を呼び出している。
出力結果はこうなる。15行目でsuperを使用することで、親メソッドを呼び出して子クラスから親を呼び出している。
変数やメソッドの隠蔽(カプセル化)
Pythonは変数やメソッドを隠蔽(カプセル化)するための宣言は存在しない。
ただし、それらしい振る舞いを与えることはできる。
* 変数名の頭にアンダースコアを1つ付ける:
変数やメソッドをクラスの外から参照も上書きもして欲しく無いことを表す。
しかし実際は参照も上書きもできてしまう。
* 変数名の頭にアンダースコアを2つ付ける:
変数やメソッドをクラスの外から参照も上書きもできなくなる。
しかし工夫すれば変更はできる。
8.エラーと例外処理
Pythonには大きく2つの種類のエラーがあります。
①もともと文法に従ってないコード
SyntaxError : クオテーションが無いなど
IndentError : 適切なインデントでないなど
②文法的に正しくても発生してしまう場合の例外エラー
リストで存在しないインデックスを指定した
関数の呼び出しで、無い関数を呼び出したなど
ワイルドカードのexcept節(bare except)
except
節から例外名を省略するとすべての例外をキャッチできる。複数のexcept
節がある場合は例外名を省略できるのは最後のexcept
節のみ。
try:
print(a / b)
except:
print('Error')
基底クラスException
システム終了(SystemExit
, KeyboardInterrupt
など)以外のすべての組み込み例外の基底クラスであるException
をexcept
節に指定する方法がある。
try:
print(a / b)
except Exception as e:
print(e)
正常終了時の処理: else
try
節で例外が発生せず正常終了したあとに行う処理をelse
節に指定できる。例外が発生してexcept
でキャッチした場合はelse
節の処理は実行されない。
try:
print(a / b)
except ZeroDivisionError as e:
print('catch ZeroDivisionError:', e)
else:
print('finish (no error)')
終了時に常に行う処理: finally
例外が発生した場合もしなかった場合も常に最後に行う処理をfinally
節に指定できる。
try:
print(a / b)
except ZeroDivisionError as e:
print('catch ZeroDivisionError:', e)
finally:
print('all finish')
else
節とfinally
節を同時に使う
else
節とfinally
節を同時に使うことも可能。正常終了時はelse
節の処理が実行されたあとにfinally
節の処理が実行される。
try:
print(a / b)
except ZeroDivisionError as e:
print('catch ZeroDivisionError:', e)
else:
print('finish (no error)')
finally:
print('all finish')
例外を無視: pass
例外をキャッチしても特に何も処理を行わずにスルーしたい場合はpass
文を使う。pass
文は何もしない文。詳細は以下の記事を参照。
Pythonのpass文の意味と使い方
try:
print(a / b)
except ZeroDivisionError:
pass
リスト内包表記と三項演算子
リストを簡単に作成する方法が内包表記です。リストを生 成する[ ]の間にfor in文を加えることで、イテラブルなオブジェクトから要素を取り出して何らかの処理を加えることができます。また、if文を併用することもできます。
リストの各要素を2乗した結果をリストで欲しい時の例
内包表記にif文を追加
三項演算子
if-else文を1行で書くことができます。(わかりにくい場合が多いのでお勧めしません。
目次に戻る
トップに戻る