68

除了标准的+, -,*/运算符;但这些是什么意思 ( **, ^, %, //) ?

>>> 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

%inx%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
4

3 回答 3

127
  • **: 取幂
  • ^: 异或(按位)
  • %: 模数
  • //:除以整数结果(丢弃余数)
于 2013-03-04T03:07:35.320 回答
36

您可以在Python 语言参考中找到所有这些运算符,但您必须滚动一下才能找到所有这些运算符。正如其他答案所说:

  • **运算符进行幂运算。被提升为权力a ** b。相同的符号也用于函数参数和调用符号,具有不同的含义(传递和接收任意关键字参数)。ab**
  • 运算符执行^二进制异或。a ^ b将返回一个值,其中仅设置了 ina或 inb但不是同时设置了这两个位。这个很简单!
  • 算子主要是求两个整数的%模。a % b返回除以 后的余ab。与其他一些编程语言(例如 C)中的模运算符不同,在 Python 中,模数将与 具有相同的符号b,而不是与a. 相同的运算符也用于字符串格式的“旧”样式,因此a % b如果a是格式字符串并且b是可以插入的值(或值的元组),则可以返回字符串a
  • //运算符执行 Python 版本的整数除法。Python 的整数除法与其他一些语言(如 C)提供的整数除法并不完全相同,因为它向负无穷大舍入,而不是向零舍入。与模运算符一起,您可以说a == (a // b)*b + (a % b). 在 Python 2 中,除法是两个整数相除时的默认行为(使用普通除法运算符/)。由于这可能是出乎意料的(尤其是当您对作为函数参数的数字类型并不挑剔时),Python 3 已更改为使“真”(浮点)除法成为四舍五入的除法规范否则,它只会在明确要求时进行“地板”除法。from __future__ import division在文件的顶部。我强烈推荐它!)
于 2013-03-04T03:33:02.153 回答
10

你是对的,这**是幂函数。

^是按位异或。

%确实是模运算,但请注意,对于正数,x % m = x只要m > x. 这是从模数的定义得出的。(另外,Python 指定x % m符号为m。)

//是一个除法运算,通过丢弃余数返回一个整数。这是/在大多数编程语言中使用的标准除法形式。然而,Python 3改变了/执行浮点除法的行为,即使参数是整数。该//运算符是在 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

于 2013-03-04T03:08:56.117 回答