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
后的余数。与某些其他编程语言(如C)中的模运算符不同,在Python中,模a的符号与b
相同,而不是与b
相同。同样的运算符也用于“旧”样式的字符串格式,因此如果a
是格式字符串,a
是可插入b
的值(或值元组),则a
可以返回字符串a
操作符执行Python版本的整数除法。Python的整数除法与其他一些语言(如C)提供的整数除法并不完全相同,因为它向负无穷大而不是向零舍入。与模运算符一起,可以说/
。在Python2中,当您除以两个整数(使用普通除法运算符a==(a//b)*b+(a%b)
)时,地板除法是默认行为。由于这可能是出乎意料的(特别是当您对函数的参数类型不太挑剔时),Python3已更改为将“true”(浮点)除法作为除法的标准,否则将进行四舍五入,并且它仅在明确请求时才进行“floor”除法。(在Python 2中,您还可以通过将来自_future__导入部分的/
放在文件的顶部来获得新的行为。我强烈推荐!)
%
:不仅符号不同,绝对值也不同!感谢这些特别是模和整数除法算子的点睛之笔。值得注意的是,x%m
总是给出一个符号为m
@HyperNeutrino的结果,谢谢。我原本只想解释OP询问的具体情况,但由于这个答案变得更一般,我添加了一个注释,大意是。@超中微子……在你的评论中,“x%m总是给出带有m符号的结果”,请详细说明“m符号”那到底是什么样子?我很难理解它。谢谢大家!@Jeremy如果m
是肯定的,答案将是肯定的。例如,5%3
是2
,但-5%3
是1
,而不是-2
。对于m
为负值的情况也类似。这与我相信的某些语言不同,比如Java。@HyperNeutrino…噢!“符号”为正(+)或负(-)。非常感谢。