Python3.5修炼手册4-duyuheng
运算符和操作对象运算符是一先特殊符号的集合
操作对象是由运算符连接起来的对象
Pyhon支持以下8个运算符
①算数运算符
②比较(关系)运算符
③赋值运算符
④逻辑运算符
⑤位运算符
⑥成员运算符
⑦身份运算符
⑧运算符优先级
算数运算符
+加:两个对象相加
-减:得到负数或一个数减去另外一个数
*乘:两个数相乘或反回一个被重复若干次的字符串
/除:x除以y
%取模:返回除法的余数
** 幂:返回x的y次幂
// 取整数(地板除):返回商的整数部分(又被称为模糊除)
小实战:
>>> print(a+b)
15
>>> print(a-b)
5
>>> print(a*b)
50
>>> print(a/b)
2.0
>>> print(a**b)
100000
>>> print(13//2)
6
>>> print(13.0//2.0)
6.0
>>> print(13%2)
1
小例子:算一下32位系统和64位系统支持多大内存
>>> 2**32/1024/1024/1024
4.0
>>> 2**64/1024/1024/1024
17179869184.0
2**32是2的32次方,这是32位系统最大支持的字节数。除以3个1024是意思是由B转换为KB,由KB转换为MB、在由MB转换为GB。这个例子可以说明32位操作系统最大只能支持4GB内存,而64位系统.......
比较运算符
== 等于:比较对象是否相等
!=不等于:比较两个对象是否不相等
> 大于:返回x是否大于y
< 小于 :返回x是否小于y。所有比较运算符返回1表示真,返回0表示假,与特殊的变量True和False等价。注意大小写。
> =大于等于:返回x是否大于等于y
<= 小于等于:返回x是否小于等于y
小实战:
>>> a=10
>>> b=20
>>> a==b
False
>>> a!=b
True
>>> a>b
False
>>> a>=b
False
>>> a<=b
True
>>> a+10>=b
True
>>> a+10>b
False
>>> a<=b-10
True
>>> a<b-10
False
>>> a==b-10
True
在一些地方,会用1代表True,0代表False,这是正确也是合理的表达方式
在python2中<>等同于!= 也表示不等于
赋值运算符
运算符 实例:假设变量a为10,变量b为20
= 简单的赋值运算符 c=a+b, 将a+b的运算结果赋值给c
+=加法赋值运算符 c+=a, 等同于c=c+a
-=减法赋值运算符 c-=a, 等同于c=c-a
*=乘法赋值运算符 c*=a, 等同于c=c*a
/=除法赋值运算符 c/=a, 等同于c=c/a
%=取模赋值运算符 c%=a,等同于c=c%a
**= 幂赋值运算符 c**=a,等同于c=c**a
//= 取整(地板)除赋值运算符 c//=a,等同于c=c//a
小实战:
>>> a=10
>>> b=20
>>> c=0
>>> c=a+b
>>> print(c)
30
>>> c+=10
>>> print(c)
40
>>> c-=a
>>> print(c)
30
>>> c*=a
>>> print(c)
300
>>> c/=a
>>> print(c)
30.0
>>> c%=a
>>> print(c)
0.0
>>> c=a**5
>>> print(c)
100000
>>> c//=b
>>> print(b)
20
>>> print(c)
5000
位运算符(比较不好理解)
位运算符是把数字看作二进制计算的的
运算符 实例:假设变量a为60,变量b为13
& 按位与运算符:若参与运算的两个值的两个相应位都为1,ze该位的结果为1,否则为0 (a&b)输出结果为12, 二进制解释:0000 1100
| 按位或运算符:只要对应的两个二进制位有一个为1,结果位就为1 (a|b)输出结果为61, 二进制解释:0011 1101
^ 按位异或运算符:当两个对应的二进制位相异时,结果为1 (a^b)输出结果为49, 二进制解释:0011 0001
~ 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 (~a) 输出结果为-61,二进制解释:1100 0011 ,在一个有符号二进制数的补码形式
<<左移动运算符:运算数的各个二进制位全部左移若干位,由<<右边的数指定移动的位数,高位丢弃,低位补0 a<<2 输出结果为240二进制解释:1111 0000
>>右移动运算符:把>>左边运算数的各个二进制位全部右移若干位,>>右边的数指定移动的位数 a>>2 输出结果为15, 二进制解释:0000 1111
小实战:
>>> a=60
>>> b=13
>>> c=0
>>> c=a&b
>>> print(c)
12
>>> c=a|b
>>> print(c)
61
>>> c=a^b
>>> print(c)
49
>>> c=~a
>>> print(c)
-61
>>> c=a<<2
>>> print(c)
240
>>> c=a>>2
>>> print(c)
15
逻辑运算符
运算符 逻辑表达式 描述 实例:假设变量a为10,量b为20
and x and y 布尔"与":如果x为False,x and y 就返回False:否则就返回y的计算值 (a and b)返回20
or x ory 布尔"或":如果x是非0,就返回x的值:否则就返回y的值 (a or b)返回10
not not x 布尔"非":如果x为True,就返回False;如果x为False,就返回True not(a and b)返回False
小实战:
>>> a=10
>>> b=20
>>> a and b
20
>>> a or b
10
>>> not a
False
>>> not b
False
>>> not -1
False
>>> not False
True
>>> not True
False
成员运算符
运算符 实例:
in 如果在指定的序列找到值,就返回True;否则就返回False x在y序列中,如果x在y序列中,就返回True
not in 如果在指定的序列没有找到值,就返回True;否则返回False x不在y序列中,如果x不在y序列中,就返回True
小实战:
>>> a=10
>>> b=5
>>> list=
>>> print(a in list)
False
>>> print(a not in list)
True
>>> print(b notin list)
False
>>> print(bin list)
True
身份运算符
身份运算符用于比较两个对象的存储单元
运算符 实例
is 判断标识符是否引用自一个对象 x is y,如果id(x)等于id(y),is返回结果True
is not 用于判断两个标识符是否引用自不同对象 x is not y, 如果id(x)等于id(y),is not 就返回结果True
小实战:
>>> a= 10
>>> b =10
>>> print(a is b)
True
>>> print(a is not b)
False
>>> b=20
>>> print(a is b)
False
>>> print(a is not b)
True
运算符的优先级
下面列出从最高到最低优先级的所有运算符
运算符
** 指数(最高优先级)
~+- 按位翻转,一元加号和减号(最后两个的方法名为 +@ 和 -@)
*/% // 乘、除、取模和取整数
>> <<右移左移
& 位AND
^| 位运算符
<= < > >=比较运算符
<> == != 等于运算符
= % = /= //= -=+= *= **= 赋值运算符
is is not 身份运算符
in not in 成员运算符
not or and逻辑运算符
当一个表达式中出现多个操作符时,求值的顺序依赖于优先级规则。
在Pyhon中有很多操作运算符,可以使用缩略词PEMDAS(顺序运算)帮助记忆部分规则
(Parentheses,P)括号拥有最高的优先级,可以强制表达式按照需要顺序求职,括号中的表达式会优先执行,也可以利用括号使得更加易读。
例如:先做加减后做乘除
>>> a=20
>>> b=15
>>> c=10
>>> d=5
>>> e=0
>>> e=(a-b)*c/d
>>> print('(a-b)*c/d=',e)
(a-b)*c/d= 10.0
若是不加括号
>>> e=a-b*c/d
>>> print('(a-b)*c/d=',e)
(a-b)*c/d= -10.0
如果表达式比较长使用括号会更容易看懂
未加括号
>>> e=a+b+c-c*d
>>> print('(a-b)*c/d=',e)
(a-b)*c/d= -5
加括号会看起非常直观,运算结果还是一样的
>>> e=(a+b+c)-(c*d)
>>> print('(a+b+c)-(c*d)=',e)
(a+b+c)-(c*d)= -5
(Exponentiation,E)乘方操作拥有更高的优先级
例如:
>>> 2**1+2
4
>>> 2**(1+2)
8
>>> 2**2*3
12
>>> 2*2**3
16
>>> 2**(2*3)
64
(Multiplication,M)乘法和(Division,D)除法优先级相同,并且高于相同优先级的(Addition,A)加法和(Subtraction,S)减法
例如:
>>> a+b*c-d
165
>>> a*b/c+d
35.0
优先级相同的操作按照从左到右的顺序求值(乘方除外)
>>> a+b-c+d
30
>>> a+b-c-d
20
页:
[1]