Python3算数运算符
a=10,b=21;
Python3比较运算符
Python3赋值运算符
Python3位运算符
按位运算符是把数字看作二进制来进行计算的。
下表中变量 a 为 60,b 为 13二进制格式如下:
a=0011 1100
b=0000 1101
a&b=0000 1100 _________a|b=0011 1101
a^b=0011 0001 __________~a=1100 0011
Python逻辑运算符
a = 10
b = 20
if a and b:
print("1 - 变量 a 和 b 都为 true")
else:
print("1 - 变量 a 和 b 有一个不为 true")
if a or b:
print("2 - 变量 a 和 b 都为 true,或其中一个变量为 true")
else:
print("2 - 变量 a 和 b 都不为 true")
# 修改变量 a 的值
a = 0
if a and b:
print("3 - 变量 a 和 b 都为 true")
else:
print("3 - 变量 a 和 b 有一个不为 true")
if a or b:
print("4 - 变量 a 和 b 都为 true,或其中一个变量为 true")
else:
print("4 - 变量 a 和 b 都不为 true")
if not (a and b):
print("5 - 变量 a 和 b 都为 false,或其中一个变量为 false")
else:
print("5 - 变量 a 和 b 都为 true")
运行结果:
1 - 变量 a 和 b 都为 true
2 - 变量 a 和 b 都为 true,或其中一个变量为 true
3 - 变量 a 和 b 有一个不为 true
4 - 变量 a 和 b 都为 true,或其中一个变量为 true
5 - 变量 a 和 b 都为 false,或其中一个变量为 false
Python成员运算符
Python身份运算符
注: id() 函数用于获取对象内存地址。
is与==的本质上的区别:
is 用于判断两个变量引用对象是否为同一个(同一块内存空间), == 用于判断引用变量的值是否相等。
#列表a=[1, 2, 3, 4, 5]
a = [1, 2, 3, 4, 5]
b = a
c = a[:]
print(a, id(a))
print(b, id(b))
print(c, id(c))
运行结果:
[1, 2, 3, 4, 5] 2464868622920
[1, 2, 3, 4, 5] 2464868622920
[1, 2, 3, 4, 5] 2464868622984
由上可见,=是引用地址,故a和b均指向同一地址,c是复制a的列表并另开辟了空间存储列表。
is和==在运行结果在交互模式下会有区别,脚本模式下结果相同(数值和地址均相同)。
交互模式下的is和==:
当执行a=3.1,b=3.1这两个语句时会先后为3.1这个Float类型对象分配内存,然后将a与b分别指向这两个对象。所以a与b指向的不是同一对象:
>>> a=3.1
>>> b=3.1
>>> a is b
False
>>> a == b
True
为了提高内存利用效率对于一些简单的对象,对于-5~256的int对象,python采取重用对象内存的办法,如指向a=255,b=255时,python不会两次为其分配内存,而是只分配一次,然后将a与b同时指向已分配的对象:
>>> a=255
>>> b=255
>>> a is b
True
>>> a==b
True
超过256时,会重新分配空间:
>>> a=257
>>> b=257
>>> a is b
False
>>> a==b
True
如果a>256&&b>256 或者a<-5&&b<-5,但a,b写在同一行时会指向同一地址:
>>> a=4444;b=4444;
>>> a is b
True
>>> a==b
True
>>> a=4444
>>> b=4444
>>> a is b
False
Python运算符优先级