这些运算符是什么意思 (** , ^ , %, //)?
除了常见的 +
、-
、*
和 /
这些运算符,还有一些其他的符号,比如 **
、^
、%
和 //
,它们分别代表什么呢?
>>> 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
中表示取余数,也就是计算 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
3 个回答
11
你说得对,**
是用来计算幂的函数。
^
是按位异或运算。
%
确实是取模运算,但要注意,对于正数来说,当 m
大于 x
时,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 中的除法
37
你可以在Python语言参考中找到所有这些运算符,不过你可能需要多滚动几下才能找到它们。正如其他回答所说:
**
运算符用于求幂。a ** b
表示的次方。同样的**
符号在函数参数和调用时也会用到,但意思不同(用于传递和接收任意的关键字参数)。^
运算符用于二进制异或运算。a ^ b
会返回一个值,这个值的位只有在a
或b
中是1,但不会同时在两个数中都是1。这一条很简单!%
运算符主要用来找两个整数的余数。a % b
会返回a
除以b
后的余数。与某些其他编程语言(比如C语言)中的取模运算符不同,在Python中,取模的结果会和b
有相同的符号,而不是和a
相同。这个运算符在“旧”风格的字符串格式化中也会用到,所以如果a
是格式字符串,而b
是可以插入到a
中的值(或值的元组),那么a % b
会返回一个字符串。//
运算符是Python的整数除法。Python的整数除法和某些其他语言(比如C语言)提供的整数除法不完全一样,因为它是向负无穷方向取整,而不是向零取整。结合取模运算符,你可以说a == (a // b)*b + (a % b)
。在Python 2中,当你用普通的除法运算符/
除以两个整数时,默认就是向下取整的行为。由于这可能会让人感到意外(特别是当你对传给函数的数字类型不太挑剔时),Python 3改变了这个规则,使得“真实的”(浮点数)除法成为常态,只有在明确要求时才会进行“向下取整”的除法。(你也可以通过在文件顶部加上from __future__ import division
来在Python 2中获得新的行为。我强烈推荐这样做!)
155
这里有一些常见的符号和它们的意思:
**
: 这个符号表示“幂运算”,也就是一个数乘以自己几次,比如2的3次方就是2乘以2再乘以2,结果是8。^
: 这个符号表示“异或运算”,主要用于处理二进制数。简单来说,它会比较两个数字的每一位,如果这两位不同,就结果为1,如果相同,就结果为0。%
: 这个符号表示“取模运算”,也就是求一个数除以另一个数的余数。例如,7除以3的余数是1,因为3乘以2是6,剩下1。//
: 这个符号表示“整除运算”,也就是把一个数除以另一个数,只保留整数部分,舍去小数部分。比如,7除以3的结果是2,因为3乘以2是6,剩下的1被丢掉了。