Python之运算符详解

1.运算符分类

  • 算术运算符:+、-、*、/、%、//、**
  • 比较运算符:==、!=、>、<、>=、<=
  • 赋值运算符:=、+=、-+、*=、/=、%=、//=、**=
  • 逻辑运算符:and、or、not
  • 位运算符:&、|、~、^、<<、>>
  • 成员运算符:in、not in
  • 身份运算符:is、is not

1.1 算术运算符

运算符 描述
+ 加,两个数相加
- 减,两个数相减
* 乘,两个数相乘
/ 除,两个数相除

//

求余,向下取接近除数的整数
% 取模,返回触发的余数
** 幂,返回x的y次幂
>>> 3 + 2 
5
>>> 0.1 + 0.2            #Python浮点数的运算其包含的小数位数是不确定的
0.30000000000000004
>>> 0.3 - 0.2
0.09999999999999998
>>> 0.2 * 0.1
0.020000000000000004
>>> 0.1 / 0.2
0.5
>>> 10 // 3
3
>>> 10 % 3               
1
>>> 2 ** 3
8

求余运算也可用于浮点数甚至负数,但是并不是很好理解。

>>> 10 % 3
1
>>> 10 % -3
-2
>>> -10 % 3
2
>>> -10 % -3
-1

通过研究与之配套的整除运算可帮助理解求余运算的工作原理。

基于除法运算的工作原理,很容易理解最终的余数是多少。

x % y的结果为x除以y的余数。换而言之,结果为执行整除时余下的部分,即x % y等价于x-((x // y) * y)。

对于整除运算,需要明白的一个重点是它向下圆整结果。因此在结果为负数的情况下,圆整后将离0更远。这意味着对于-10 // 3,将向下圆整到-4,而不是向上圆整到-3。

1.2 比较运算符

结果返回布尔值(True或False)

运算符

描述

== 等于,比较两者是否相等
!= 不等于,比较两者是否不相等
> 大于,返回a是否大于b
< 小于,返回a是否小于b
>= 大于,返回a是否大于等于b
<= 小于,返回a是否小于小于b
>>> 5 == 3
False
>>> 5 != 3
True
>>> 5 > 3
True
>>> 5 < 3
False
>>> 5 >= 3
True
>>> 5 <= 3
False

1.3 赋值运算符

注:python没有自增自减运算符(如++、--)

运算符

描述

= 赋值运算符
+=

加法赋值运算符,a += b等价于a = a + b

-= 减法赋值运算符,a -= b等价于a = a - b
*= 乘法赋值运算符,a *= b等价于a = a * b
/= 除法赋值运算符,a /= b等价于a = a / b
//= 求余赋值运算符,a //= b等价于a = a // b
%= 取模赋值运算符,a %= b等价于a = a % b
**= 幂赋值运算符,a **= b等价于a = a ** b

>>> a = 20
>>> b = 10
>>> a += b
>>> a
30
>>> a -= b
>>> a
20
>>> a *= b
>>> a
200
>>> a /= b
>>> a
20.0
>>> a //= 2
>>> a
10.0
>>> a = 10
>>> a %= 4
>>> a
2
>>> a **= 2
>>> a
4

1.4 逻辑运算符

运算符

描述

and 布尔与,and两端都为True则为True,否则为False
or 布尔或,or两端只要有一个为True则为True,否则为False
not 布尔非,若x为True,返回False。若x为False,则返回True
>>> True or True and False              #可以看出and优先级高于or
True                                    #正确的执行顺序为:True or (True and False)  
>>> not not True or False and not True  #可以看出优先级:not>and>or
True                       #正确的执行顺序为:not (not (True or (False and (not True))))

1.5 位运算符

运算符

描述

& 按位与运算符,参与运算的两个值,若相应位都为1,则该位的结果为1,否则为0
| 按位或运算符,只要对应的两个二进制值有一个为1时,结果就为1;全为0则为0
~ 按位取反运算符,对数据的每个二进制取反,即把1变0,0变1
^ 按位异或运算符,当两对应的二进制相应位不相同时,则该位的结果为1
<< 左移运算符,运算符的各二进制位全部左移若干位,高位丢弃,低位补0
>> 右移运算符,运算符的各二进制位全部右移若干位,高位补0,低位丢弃
>>> 3 & 2              #3二进制为011,2二进制为010,按位与后为010,转换为十进制就是2
2
>>> 3 | 2              #3二进制为011,2二进制为010,按位或后为011,转换为十进制就是3
3
>>> 3 ^ 2              #3二进制为011,2二进制为010,按位异或后为001,转换为十进制就是1
1
>>> ~3                 #3二进制为011,按位取反后为100,转换为十进制就是4
-4
>>> 8 << 2             #8二进制为1000,左移两位为100000(末尾补2个0),转换为十进制就是32
32
>>> 8 >> 2             #8二进制为1000,左移两位为0010(高位补2个0),转换为十进制就是2
2

1.6 成员运算符

运算符

描述

in 若在指定序列中找到指定值返回True,否则返回False
not in 若在指定序列中没有找到指定值返回False,否则返回True
>>> 3 in (1,2,3)
True
>>> 4 in (1,2,3)
False
>>> 'a' in 'python'
False
>>> 'p' in 'python
True

1.7 身份运算符

运算符

描述

is 若两个标识符引用自一个对象返回True,否则返回False
is not 若两个标识符引用自不同对象返回True,否则返回False

 

>>> a = 5
>>> b = 3 
>>> c = 5
>>> a is b
False
>>> a is c
True
>>> b is c
False
>>> a is not b
True
>>> a is not c
False

2. 运算符优先级

运算符(降低优先顺序)

说明

**

幂运算符

~、+、-

按位翻转、一元加号、一元减号

*、/、%、//

算术运算符

>>、<<

位运算符

&

位运算符

^、|

位运算符

<、> 、<=、>=

比较运算符

==、!=

比较运算符

=、+=、-=、*=、/=、%=、//=、**=

赋值运算符

is、is not

身份运算符

in、not in

成员运算符

and、or、not

逻辑运算符

你可能感兴趣的:(Python3)