标准+
,-
,*
和/
运营商除外;但这些意味着什么(**
,^
,%
,//
)?
>>> 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
答案 0 :(得分:82)
**
:exponentiation ^
:exclusive-or(按位)%
:模数//
:除以积分结果(丢弃余数)答案 1 :(得分:21)
您可以在Python language reference中找到所有这些运算符,但您必须滚动一下才能找到它们。正如其他答案所说:
**
运算符取幂运算。 a ** b
a
被b
提升为**
。函数参数和调用符号中也使用相同的^
符号,具有不同的含义(传递和接收任意关键字参数)。a ^ b
运算符执行二进制xor。 a
将仅返回一个值,该值仅包含b
或%
中设置的位,但不能同时返回两者。这个很简单!a % b
运算符主要是找到两个整数的模数。将a
除以b
后,b
会返回余数。与其他一些编程语言(如C)中的模运算符不同,在Python中,模数与a
具有相同的符号,而不是与a % b
相同的符号。相同的运算符也用于“旧”字符串格式,因此a
可以返回字符串,如果b
是格式字符串而a
是值(或值的元组) )可插入//
。a == (a // b)*b + (a % b)
运算符执行Python的整数除法版本。 Python的整数除法与其他一些语言(如C)提供的整数除法并不完全相同,因为它向负无穷大而不是向零舍入。与模数运算符一起,您可以说/
。在Python 2中,当你划分两个整数时(使用普通除法运算符from __future__ import division
),floor division是默认行为。由于这可能是意料之外的(特别是当你对于你作为函数的参数得到的数字类型并不挑剔时),Python 3已经改为使“真正的”(浮点)除法成为可以舍入的除法的范数否则,只有在明确要求时才会进行“底层”划分。 (您也可以通过将{{1}}放在文件顶部来获取Python 2中的新行为。我强烈推荐它!)答案 2 :(得分:3)
你是正确的**
是权力函数。
^
是按位异或。
%
确实是模数运算,但请注意,对于正数,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 |
有关详细信息,请参阅此问题:Division in Python 2.7. and 3.3