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

Python 这些运算符是什么意思(**,^,%,/)?,python,math,operators,native,Python,Math,Operators,Native,除了标准的+、-、*和/操作员之外;但是这些是什么意思(**,^,%,/) 关于^操作员的情况如何? >>> 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

除了标准的
+
-
*
/
操作员之外;但是这些是什么意思(
**
^
%
/

关于
^
操作员的情况如何?

>>> 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
>>> 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
%
中的
x%m
返回正常的余数模,但仅当
m
时,为什么会这样?
%
做什么?

>>> 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
>>> 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
那么
/
操作符呢?它有什么作用?

>>> 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
>>> 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
  • **
    :求幂
  • ^
    :异或(按位)
  • %
    :模数
  • /
    :用整数结果除法(放弃余数)

    • 您正确地认为,
      **
      是电源功能

      ^
      是按位异或

      %
      确实是模运算,但请注意,对于正数,
      x%m=x
      无论何时
      m>x
      。这源于模量的定义。(此外,Python指定
      x%m
      带有
      m
      符号)

      /
      是一种除法运算,通过丢弃余数返回整数。这是大多数编程语言中使用
      /
      的标准除法形式。但是,Python3更改了
      /
      的行为以执行浮点除法,即使参数是整数。Python2.6和Python3中引入了
      /
      操作符,以提供一个在Python2和Python3之间行为一致的整数除法操作符。这意味着:

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

      有关更多详细信息,请参见此问题:

      您可以在中找到所有这些运算符,但您必须滚动一点才能找到它们。正如其他答案所说:

      • **
        运算符执行幂运算<代码>a**b
        被提升为
        a
        b
        电源。相同的
        **
        符号也用于函数参数和调用符号中,具有不同的含义(传递和接收任意关键字参数)
      • ^
        运算符执行二进制异或运算
        a^b
        将仅返回在
        a
        b
        中设置的位的值,但不能同时返回这两个位。这个很简单
      • %
        运算符主要用于求两个整数的模
        a%b
        返回
        a
        除以
        b
        后的余数。与某些其他编程语言(如C)中的模运算符不同,在Python中,模a的符号与
        b
        相同,而不是与
        a
        相同。同样的运算符也用于“旧”样式的字符串格式,因此如果
        a
        是格式字符串,
        b
        是可插入
        a
        的值(或值元组),则
        a
        可以返回字符串
      • /
        操作符执行Python版本的整数除法。Python的整数除法与其他一些语言(如C)提供的整数除法并不完全相同,因为它向负无穷大而不是向零舍入。与模运算符一起,可以说
        a==(a//b)*b+(a%b)
        。在Python2中,当您除以两个整数(使用普通除法运算符
        /
        )时,地板除法是默认行为。由于这可能是出乎意料的(特别是当您对函数的参数类型不太挑剔时),Python3已更改为将“true”(浮点)除法作为除法的标准,否则将进行四舍五入,并且它仅在明确请求时才进行“floor”除法。(在Python 2中,您还可以通过将来自_future__导入部分的
        放在文件的顶部来获得新的行为。我强烈推荐!)

      我觉得你已经回答了你自己的问题。如果你搜索“python操作符”,第一个链接就是一个很好的操作符列表。如果你对链接的文档有具体的问题,请引用你不理解的部分并询问。所有这些都是算术(**、%、/)和位(^)运算符-另请参见=)至于
      %
      :不仅符号不同,绝对值也不同!感谢这些特别是模和整数除法算子的点睛之笔。值得注意的是,
      x%m
      总是给出一个符号为
      m
      @HyperNeutrino的结果,谢谢。我原本只想解释OP询问的具体情况,但由于这个答案变得更一般,我添加了一个注释,大意是。@超中微子……在你的评论中,“x%m总是给出带有m符号的结果”,请详细说明“m符号”那到底是什么样子?我很难理解它。谢谢大家!@Jeremy如果
      m
      是肯定的,答案将是肯定的。例如,
      5%3
      2
      ,但
      -5%3
      1
      ,而不是
      -2
      。对于
      m
      为负值的情况也类似。这与我相信的某些语言不同,比如Java。@HyperNeutrino…噢!“符号”为正(+)或负(-)。非常感谢。