標準の+
、-
、*
および/
演算子以外;しかし、これらはどういう意味ですか(**
、^
、%
、//
)?
>>> 9+float(2) # addition
11.0
>>> 9-float(2) # subtraction
7.0
>>> 9*float(2) # multiplication
18.0
>>> 9/float(2) # division
4.5
>>>
>>> 9**float(2) # This looks like a square, (i.e. power 2)
81.0
>>> 9**float(3) # So ** is equivalent to `math.pow(x,p)` ?
729.0
^
演算子はどうですか?
>>> 9^int(2) # What is `^` in `x^u` , it only allows `int` for `u`
11
>>> 9^int(3)
10
>>> 9^int(4)
13
>>> 9^int(5)
12
>>> 9^int(6)
15
>>> 9^int(7)
14
>>> 9^int(8)
1
>>> 9^int(9)
0
>>> 9^int(10)
3
>>> 9^int(11)
2
>>> 9^int(12)
5
%
の[x%m
は通常の剰余係数を返しますが、m < x
の場合のみ、なぜそうなるのですか?%
は何をしますか?
>>> 9%float(2)
1.0
>>> 9%float(3)
0.0
>>> 9%float(4)
1.0
>>> 9%float(5)
4.0
>>> 9%float(6)
3.0
>>> 9%float(7)
2.0
>>> 9%float(8)
1.0
>>> 9%float(9)
0.0
>>> 9%float(10)
9.0
>>> 9%float(11)
9.0
>>> 9%float(12)
9.0
//
演算子はどうですか?それは何をしますか?
>>> 9//float(2)
4.0
>>> 9//float(3)
3.0
>>> 9//float(4)
2.0
>>> 9//float(5)
1.0
>>> 9//float(6)
1.0
>>> 9//float(7)
1.0
>>> 9//float(8)
1.0
>>> 9//float(9)
1.0
>>> 9//float(1)
9.0
>>> 9//float(0.5)
18.0
**
:べき乗^
:排他的論理和(ビット単位)%
:モジュラス//
:整数の結果で除算(剰余を破棄)これらの演算子はすべて Python言語リファレンス で見つけることができますが、それらをすべて見つけるには少しスクロールする必要があります。他の答えが言ったように:
**
演算子は累乗を行います。 a ** b
はa
のb
乗です。同じ**
シンボルも関数引数と呼び出し表記で使用されますが、意味は異なります(任意のキーワード引数の受け渡し)。^
演算子は、バイナリxorを実行します。 a ^ b
は、a
またはb
に設定されたビットのみで値を返しますが、両方は返しません。これは簡単です!%
演算子は、主に2つの整数のモジュラスを見つけるためのものです。 a % b
は、a
をb
で除算した後の剰余を返します。他のプログラミング言語(Cなど)のモジュラス演算子とは異なり、Pythonモジュラスでは、b
と同じ符号ではなく、a
と同じ符号になります。 「古い」スタイルの文字列フォーマットにも同じ演算子が使用されるため、a
がフォーマット文字列でb
が値(または値のタプル)の場合、a % b
は文字列を返すことができます。 )a
に挿入できます。//
演算子は、Pythonバージョンの整数除算を行います。 Pythonの整数除算は、他の言語(Cなど)が提供する整数除算とまったく同じではありません。ゼロではなく負の無限大に向かって丸められるためです。モジュラス演算子とともに、a == (a // b)*b + (a % b)
と言うことができます。 Python 2では、(通常の除算演算子/
を使用して)2つの整数を除算する場合のフロア除算がデフォルトの動作です。これは予期しないことがあるので(特に、関数の引数として取得する数値の種類にこだわりがない場合)、Python 3が "true"(浮動小数点)除算の基準になるように変更されました。それ以外の場合は四捨五入され、明示的に要求された場合にのみ「フロア」分割を行います。 (Python 2の新しい動作は、from __future__ import division
をファイルの先頭に置くことでも取得できます。強くお勧めします!)**
がべき関数であることは正しいです。
^
はビット単位のXORです。
%
は実際にモジュラス演算ですが、正の数の場合、x % m = x
の場合は常にm > x
になります。これは、モジュラスの定義に基づいています。 (さらに、Pythonはx % m
にm
の符号を指定します。)
//
は、剰余を破棄して整数を返す除算演算です。これは、ほとんどのプログラミング言語で/
を使用した除算の標準形式です。ただし、Python3は、/
の動作を変更して、浮動小数点除算を実行する場合でも引数は整数です。 //
演算子は、Python 2.6とPython 3で導入され、Python 2とPython 3の間で一貫して動作する整数除算演算子を提供します。手段:
| context | `/` behavior | `//` behavior |
---------------------------------------------------------------------------
| floating-point arguments, Python 2 & 3 | float division | int divison |
---------------------------------------------------------------------------
| integer arguments, python 2 | int division | int division |
---------------------------------------------------------------------------
| integer arguments, python 3 | float division | int division |
詳細については、次の質問を参照してください。 Python 2.7。および3.3の分割