这些运算符是什么意思(**,^,%,//)?

alv*_*vas 40 python math native operators

除了标准+,-,*/运营商; 但什么是这些均值(**,^,%,//)?

>>> 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
Run Code Online (Sandbox Code Playgroud)

又如何^操作?

>>> 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
Run Code Online (Sandbox Code Playgroud)

%in 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
Run Code Online (Sandbox Code Playgroud)

又如何//操作?它有什么作用?

>>> 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
Run Code Online (Sandbox Code Playgroud)

Joh*_*nck 85

  • **:取幂
  • ^:exclusive-or(按位)
  • %:模数
  • //:除以积分结果(丢弃余数)


Blc*_*ght 25

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

  • **运营商不幂.a ** ba提升到了b权力.**函数参数和调用符号中也使用相同的符号,具有不同的含义(传递和接收任意关键字参数).
  • ^运营商做一个二进制XOR.a ^ b将仅返回一个值,该值仅设置在a或中,b但不是两者都设置.这个很简单!
  • %运营商大多是找两个整数的模量.a % b划分后返回余数a通过b.与其他一些编程语言(如C)中的模运算符不同,在Python中,模数与符号相同b,而不是相同的符号a.同一个运算符也用于"旧"字符串格式化,因此a % b如果a是格式字符串,b则返回字符串,并且是可以插入的值(或值的元组)a.
  • //运营商不Python的版本整数除法.Python的整数除法与其他一些语言(如C)提供的整数除法并不完全相同,因为它向负无穷大而不是向零舍入.与模数运算符一起,您可以这么说a == (a // b)*b + (a % b).在Python 2中,当你划分两个整数时(使用普通除法运算符/),floor division是默认行为.由于这可能是意料之外的(特别是当你对于你作为函数的参数得到的数字类型并不挑剔时),Python 3已经改为使"真正的"(浮点)除法成为可以舍入的除法的范数否则,只有在明确要求时才会进行"底层"划分.(您也可以通过放在from __future__ import division文件的顶部来获取Python 2中的新行为.我强烈推荐它!)


Kyl*_*and 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  |
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参阅此问题:Division in Python 2.7。和3.3