[ 参照リンク:Pythonの基本演算子](https://www.imangodoc.com/180.html)
記事ディレクトリ
1算術演算子2ビット演算子3比較演算子4割り当て演算子5識別演算子6メンバー演算子7論理演算子
今日はPythonの7つの主要な演算子の意味を要約します。この記事は演算子の優先度に従って大まかにソートされています。カタログを見ると各演算子の優先度を確認できます~~
1 算術演算子
インデックス**が最も優先度が高く、次に乗算*、除算/、丸め//、残りの%、最後に+を加算して-を減算します。
ここでは、/、//、%に焦点を当てます。他の演算子は非常に単純なので、これ以上説明する必要はありません。
1 )スラッシュ/、除算、2つのintの除算も、小数を保持します。
3 /2 = 1.5
10 /3 = 3.3333333333333335
4 /2 = 2.0
2 )2つのスラッシュ//除算の結果を切り捨てます。 //の両側に浮動小数点型がある場合、結果の丸めに基づいて.0が保持されます。
3 //2 = 1
4 //2 = 2
4 //2.0 = 2.0
3 )パーセント符号%、係数を取り、分割の残りを返します。 %の両側は整数でなければなりません。負の整数がある場合、残りの符号は%の右側の符号と同じです。
5 %3 = 2
3 %(-2)= -1#符号は-2と一致しているため、-1になります。
4 %2 = 0
4 %2.0 = 0.0
2 ビット演算子
ビット単位の演算子はバイナリに基づいて計算されます。バイナリでは、1は通常True、0は通常Falseです。
1 )ビット単位の論理演算子:and&、または|、排他的または^、否定〜。
&:ビット単位のAND演算子、2つのバイナリ番号の対応するビットは1、このビットの結果は1、それ以外の場合は0; |:ビット単位のOR演算子、2つのバイナリ番号の対応するビットの1つが1の場合結果ビットは1です。^:XOR演算子、2つのバイナリ番号の対応するビットが異なる場合、結果は1です。〜:否定演算子、バイナリは反転されます。つまり、1は0に反転され、0は1.1。
2 )シフト演算子:左シフト<<、右シフト>>。
<< 1ビットの各シフトは2を掛けることに相当します。>>の各シフトは2で割ることに相当します。分割できない場合は切り捨てられます。
これを見ると、ビットワイズ演算子が何を話しているのか理解できないかもしれません...これを明確にするために、別の記事を書きます。スペースに限りがあるため、今回は詳しく説明しません〜
とりあえずそんなことがあるので、次回は穴を埋めてください〜
3 比較演算子
最も基本的なもの:<未満、>より大きい、==に等しい、<=以下、> =以上、!=に等しくない。これらは一目で明らかであり、説明する必要はありません。
4 割り当て演算子
1 )=に等しい、それは非常に簡単です。左側にラベルを付けて右側に値を配置するだけです。 2)+ =、つまり、左右に元の値を追加し、左側の値を追加された新しい値に更新します。たとえば、a + = 1はa = a + 1と同等ですが、a = a +1はa + = 1ほど効率的ではありません。 3)同様に、-=、* =、/ =、%=、** =、// =があります。
5 アイデンティティ演算子
ID演算子は、あり、ありません。ここで、の違いについて説明します。=、==これは初心者が混乱しやすいものです。
1 )isと==について話させてください
は、2つのオブジェクトのID値が等しいかどうか、つまり、同じメモリアドレスを指しているかどうかを比較します。==は、2つのオブジェクトの内容が等しいかどうか、つまり、値が等しいかどうかを比較します。
a = "Python"
b = a
b == a
True
id(a)
2974848979888 # aのアドレス
id(b)
2974848979888 # bのアドレスはaと同じです
b is a
True
上記の例では、bとaのメモリアドレスは同じであり、同じメモリブロックを指しています。直接割り当ては値への参照であるため、isと==の結果は両方ともTrueです。 bと異なるメモリを指す場合、bの結果はFalseであり、b == aの結果はTrueです。
a = [1,2,3]
b = [1,2,3]
print(a == b)
True
id(a)
2974887936648
id(b)
2974887936456 # 2つのリストaとbの要素は同じですが、アドレスは異なります
print(a is b)
False
最後に注意すべきことは、Pythonはすべての整数オブジェクトではなく、小さい整数オブジェクト(範囲[-5、256])のみをキャッシュすることです。たとえば、小さな整数オブジェクト[-5,256]のみが再利用のためにキャッシュに入れられます。
a = 1
b = 1
print(a == b)
True
print(a is b)
True
a = 257
b = 257
print(a == b)
True
print(a is b)
False
ただし、この状況はコマンドラインでのみ実行できます。Pycharmで実行した場合、またはファイルとして保存した場合、結果は異なります。これは、インタープリターがいくつかの最適化を行ったためです。
2 )=と==を見てください
これら2つは区別しやすいです。
= の意味は、a = 3などの変数に値を割り当て、aに値3を割り当てることです。==は、それらが等しいかどうかを判断し、TrueまたはFalseを返すことです。たとえば、1 == 1の場合、それらが等しい場合はTrueを返し、1 == 2の場合、それらが等しくない場合はFalseを返します。
a = [1,2]
b = [1,2]
c = a
print(a == b)
True
print(a is b)
False
print(a is c)
True
3 )!=ではありません
二重等符号==および不等符号!=それらが等しいかどうかを判断します;それらが同じオブジェクトであるかどうかを判断します。
a = [1,2,3]
b = [1,2,3]
print(a == b)
True
print(a != b)
False
print(a is b)
False
print(a is not b)
True
6 メンバーオペレーター
inとnotinは、要素が現在のオブジェクトにあるかどうかを判別するために使用されます
print('ab' in 'abc')
True
print(a in ['a','b','c'])
False
print('a' in ['a','b','c'])
True
print(['a','b'] in ['a','b','c'])
False
print(['a','b'] not in ['a','b','c'])
True
7 論理演算子
優先順位:>および>または。
との両側がTrueの場合はTrueを返し、そうでない場合はFalseを返します。両側がFalseの場合はFalseを返し、それ以外の場合はTrueを返します。
短絡現象:
前の式とがFalseの場合、次の式は実行されません。前の式またはがTrueの場合、次の式は実行されません。
print(1 > 2 and 3 < 2 or not 4 > 5)
True
上記の例を分解します。1> 2および3 <2または4> 5ではありません。
比較演算子の優先度が論理演算子よりも高いため、最初のステップはFalseとFalseまたはFalse以外に変換されます。notの優先度がandより大きいため、FalseとFalseまたはTrueに変換されます。andの優先度がorより大きいため、またはに変換されます。 FalseまたはTrue;最終結果はTrueです。
Recommended Posts