2.3演算子と式

4000 ワード

演算とは、データに対する操作であり、演算子やオペレータと呼ばれ、演算される対象(データ)を演算量や操作数と呼ぶ簡潔な記号で記述することが多い.式(expression)は、演算オブジェクトを演算子で接続した式であり、演算オブジェクトは定数、変数、または関数であってもよい.Pythonの演算子は非常に豊富で、賦値演算子、算術演算子、関係演算子、論理演算子、メンバー演算子、アイデンティティ演算子などが含まれています.
2.3.1代入演算子
変数に値を割り当てる、または変数に対応するメモリセルに値を転送することを意味する付与演算.Pythonの付与値は一般的な高級言語の付与値と大きく異なり、直接変数に値を付与するのではなく、参照によって伝達され、付与時にこのオブジェクトが新しく作成されたものであってもすでに存在しているものであっても、そのオブジェクトの参照を変数に付与します.サンプルコード:
>>>a = 5
>>>b = 9
>>>a = b

以上のコードの解釈では、aは5を指し、bは9を指し、「a=b」が実行されると、bは自分が指すアドレス(すなわち9のメモリアドレス)をaに付与し、最後の結果はaとbが同時に9を指す.Pythonは動的タイプ言語であり,変数タイプを事前に定義する必要はなく,変数のタイプと値は付与された時点で初期化される.サンプルコード:
>>>x = 67.8
>>>x = "ABCD"

2.3.2算術演算子
算術演算子は、算術演算を実行するためによく使用される演算子です.Pythonの算術演算子には、+(プラス)、-(マイナス)、*(乗)、/(正確な除算)、//(床除算)、%(型を求める)、**(乗)があり、加算、減算、乗および乗の演算規則は通常の使用習慣と一致し、言うまでもない.サンプルコード:
>>>a = 21
>>>b = 10
>>>c = a + b
>>>d = a - b
>>>e = a * b
>>>f  = b**2
>>>print(c, d, e, f)
31  11  210  100

Pythonの除算演算は精確除算と床除算に分けられる.正確な除算("/")では、操作数が整形または浮動小数点型であっても、その演算結果は常に実際のビジネスに戻ります.サンプルコード:
>>>1/2
0.5
>>>1.0/2.0
0.5

床除算("//")では、オペランドの種類にかかわらず、その商値は正確な結果の最大整数値を超えません.サンプルコード:
>>>23//3
7  
>>>-23//-3
7
>>>23//(-3)
-8 
>>>-23//3
-8
>>>22.3//3
7
>>>-22.3//3.1
-8.0

モジュール演算("%)は余剰演算とも呼ばれ、演算対象が整数であることが要求される.オペランドがすべて正数である場合、その戻り値も正数である.オペランドに負の値がある場合、その結果記号は2番目のオペランド記号によって決定されます.サンプルコード:
>>>10%3
1
>>>10%-3
-1
>>>-10%3
2
>>>-10%-3
-1

2.3.3関係演算子
関係演算子は比較演算子とも呼ばれ、2つのオペランドの大きさ関係を比較し、関係が成立すると演算結果は論理値True、そうでないと結果はFalseとなる.Pythonでよく使用される関係演算子は、(より大きい)、>=(より大きい)、=(等しい)、!=(等しくない).サンプルコード:
>>>i, j, k = 1, 2, 3
>>>i > j
False
>>>k == i + j
True
>>>i < j + k
True

説明:リレーショナル演算内の各演算子の優先度は同じですが、リレーショナル演算子の優先度は算術演算子の優先度より低いです.
2.3.4論理演算子
論理演算はブール演算とも呼ばれる.Pythonの論理演算子にはand(論理と)、or(論理または)、not(論理非)がある.このうち、論理非の優先度が最も高く、論理とそれに次いで、論理またはの優先度が最も低い.Pythonの論理演算結果は、C,C++やJavaなどの一般的な高度な言語とは異なります.一般的に後者の論理演算値はブール値であり,Pythonは異なる.非演算(or)については,Python演算規則はこれらの言語と比較して特にない.notは2つの戻り値、TrueとFalseしかありません.Pythonでは、False、None、数値0、空の文字列、空のコンテナタイプなど、真の値は偽のオブジェクトです.それ以外のオブジェクトはすべて真です.サンプルコード:
>>>not False
True
>>>not None
True
>>>not 0
True
>>>not ""
True
>>>not 1
False

与演算(and)の場合、Pythonの演算規則は左の式が真であれば、右の式の値を返す.そうでなければ、左の式の値を返します.サンプルコード:
>>>1 and 2
2
>>>1 and False
False
>>>True and False
False
>>>0 and 1
0
>>>0 and True
0
>>>0 and False
0
>>>False and 1
False
>>>False and True
False

あるいは演算(or)について、Pythonの演算規則は左の式が真であれば、左の式の値を返す.そうでなければ、右側の式の値を返します.サンプルコード:
>>>1 or 2
1
>>>1 or False
1
>>>True or False
True
>>>0 or 1
1
>>>0 or True
True
>>>0 or False
False
>>>False or 1
1
>>>False or True
True

なお、「演算」a and bについては、aが真であれば、bを計算し続けると、bは最終的に式全体の真値を決定するので、結果はbの値となる.aが偽であれば,bを計算する必要がなく,式全体の真の値が偽であることが分かるので,結果はaの値である.「または演算」a or bの場合、aが真であれば、bを計算する必要がなく、式全体の真の値が真であることが分かるので、結果はaの値である.aが偽である場合、bを計算し続けると、bは式全体の最終的な値を決定するので、結果はbの値となる.
2.3.5メンバー演算子
Pythonのメンバー演算子inは、指定したシーケンスで値が存在するかどうかを検索し、存在する場合はTrueを返し、そうでない場合はFalseを返します.指定したシーケンスには、文字列、リスト、またはメタグループが含まれます.not inは、その演算結果とは逆です.サンプルコード:
>>>3 in (19, 28, 3, 34, 0)
True
>>>3 not in (22, 28, 3, 89, 0)
False

2.3.6アイデンティティー演算子
アイデンティティ演算子isは、2つの変数が同じオブジェクトを指しているかどうかをテストするために使用され、notisはその演算結果とは逆です.サンプルコード:
>>>a = 20
>>>b = 20
>>>a is b
True
>>>a is not b
False