Python 演算子

プログラムで値を代入したり、四則演算の足し算や引き算の計算に利用する記号が「演算子」です。

この記事の著者 ->S.E; です。

メインとしている言語はPHPですが、この先、機械学習やAIなどで利用されているPythonを習得したいと考えています。

このページは「ゼロから始めるPythonプログラミング学習」としてPythonの基本的な部分から学習を始めたいと思います。

最終的にはWebでの利用やアプリの開発、機械学習、AI、簡単なゲームなどのプログラミングを目指したいと思います。

また、参考になる書籍なども紹介しています。

値の代入 「=」代入演算子

変数定数はPythonプログラミング学習でも既に出てきましたが、変数・定数に文字列や数値を代入するための演算子が「=」です。
数学での「=」とは意味合いが異なります。

算術演算子

下記はPythonで利用する算術演算子です。

演算子内容例(式 → 結果)
+加算(足し算)2 + 6 → 8
減算(引き算)5 – 3 → 2
*乗算(掛け算)3 * 4 → 12
**べき乗2 ** 3 → 8
/除算(割り算)5 / 2 → 2.5
//除算(割り算:切り捨て)5 // 2 → 2
%剰余(割り算の余り)15 % 2 → 1

実際にPythonで演算し結果をprintしたものです。

データ型による挙動の違い

Python データ型」でも解説した内容ですが、データ型によって挙動が異なる例を紹介します。

通常「10」と「5」を足し算「10 + 5」すると結果は「15」ですが、データ型が「文字列」の場合は結果が異なります。

文字列の「10」と文字列の「5」を足すと結果は「105」となります。足し算が行われるのではなく文字列が連結される結果となります。

ちなみに「減算」した場合はエラーとなります。

また、文字列と整数を演算してもエラーとなります。

PHPやJavaScriptは異なる型を演算しても自動で型を変換してくれますが、Pythonではデータ型を揃えてから演算する必要があります。
面倒なようにも思えますが、「自動で型の変換を行う」処理によりバグが発生することもあるので、変数や定数のデータ型は曖昧にするのではなくしっかりと決めて処理する癖をつけるのが望ましいと思います。

浮動小数点を含んだ演算時の注意点

浮動小数点(1以下の数値 0.1や0.5など)を含んだ演算を行なった際、思った結果を得られないことがあります。

上記のように「0.2 * 3」の演算は「0.6」の結果を得られると思いますが、Pythonでの演算の結果は「0.6000000000000001」となります。
これはPythonが内部的に数値を「10進数」ではなく「2進数」で演算するために起きる「誤差」となります。

この誤差を生じさせずに計算したい場合は「Decimal型」を利用します。
数値の代入前に「import decimal」を記述し「Decimal型」を利用できる状態にし、変数に数値を代入する際「decimal.Decimal()」を利用して代入します。この代入時は数値を「’」で囲む必要があります。

「=」以外の代入演算子

Pythonには最初に紹介した「=」以外にも代入演算子が存在します。

演算子内容
+=左辺と右辺を加算した結果を、左辺に代入x = 5
x += 2
→ 7
-=左辺と右辺を減算した結果を、左辺に代入x = 5
x -= 2
→ 3
*=左辺と右辺を乗算した結果を、左辺に代入x = 5
x *= 2
→ 10
**=左辺と右辺をべき乗した結果を、左辺に代入x = 5
x **= 2
→ 25
/=左辺と右辺を徐算した結果を、左辺に代入x = 5
x /= 2
→ 2.5
//=左辺と右辺を徐算した整数部分を、左辺に代入x = 5
x //= 2
→ 2
%=左辺と右辺を徐算した余りを、左辺に代入x = 5
x %= 2
→ 1
&=左辺と右辺をビット論理積した結果を、左辺に代入x = 10
x &= 2
→ 2
^=左辺と右辺をビット排他論理和した結果を、左辺に代入x = 10
x ^= 2
→ 8
|=左辺と右辺をビット論理和した結果を、左辺に代入x = 10
x |= 2
→ 10
>>=左辺と右辺の値だけを左にシフトした結果を、左辺に代入x = 10
x >>= 2
→ 2
<<=左辺と右辺の値だけを右にシフトした結果を、左辺に代入x = 10
x <<= 2
→ 40

代入演算子「=」は全て参照の引き渡し

「=」を利用して変数への代入は「参照引き渡し」と言います。

代入された値はコンピュータのメモリに保存されます。これを変数を利用しメモリ上のアドレスのようなものから値を呼び出します。

下記はメモリ上のID(識別値)をそれぞれ表示したものです。変数「a」と変数「b」はそれぞれ異なるID(識別値)を持っているのがわかります。

次に変数「b」に変数「a」を代入した場合はどのような結果になるでしょうか?
結果は変数「a」「b」ともに同じアドレス(識別値)となりました。
これが「参照の引き渡し」となります。

今回は、変更不可の変数への代入を紹介しましたが、変更可能な配列の変数を利用時はまた異なる結果となります。変更可能な変数への「参照引き渡し」は配列をを紹介する際に解説したいと思います。

演算子はプログラムの基本

プログラミングを行う上で演算子を利用しないことはないので必ず理解しておきましょう。

created by Rinker
プログラミングの初学者に向けた独習シリーズに『独習Python』が新登場。プログラミング言語入門書の執筆で定評のある山田祥寛氏による、Python入門書の決定版です。
created by Rinker
プログラマになるためのスキルを独学できる本です。Pythonプログラミングの基本を学べるだけでなく、プログラマとして必要なスキル(シェル、正規表現、パッケージ管理、バージョン管理、データ構造、アルゴリズム、仕事の始め方・やり方)もひと通り学べるのが特徴です。「プログラミングを始めたい」「できればその道でプロを目指してみたい」――そんな読者にオススメです。
created by Rinker
本書は、コンピュータは普通に使うけど、プログラミングなんてまったくしたことがないし、できる自信がない、といったかたを読者対象としています。Python(パイソン)言語を使ってプログラミングを学ぶ本ですが、学ぶための前提知識は一切必要ありません。ご安心ください。

コメントする

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)