整数和浮点数
python整数运算结果仍是整数
浮点数运算结果仍然是浮点数
整数和浮点数运算完仍是浮点数
整数除法除不尽仍是整数 余数被直接扔掉
求余运算符号 %
整除符号 /
要想计算精确结果 把整数变成浮点数
11.0 / 4
短路计算
a = True
print (a and 'a = T' or 'a = F')
结果不是布尔类型 而是a = T
#->a =T
a = True
print (a and 'a = T' or 'a = F')
#->a = T
结果必然是False
因此返回a
如果a是True 则整个计算结果必定取决于b
因此返回b
在计算a or b 时
如果a是True则根据或运算法则 1 ||b
整个计算结果必定为True 则根据或运算法则
整个结果必定为True
因此返回a
如果a是False则根据或运算法则 0 || b
结果取决于b
因此返回b
所以Python解释器在做布尔运算时,
只要能提前确定计算结果,
print('hello,',a and 'world')
#->hello, world
#hello python a || 1
#hello, python
#hello world a || 1
#hello,
#hello, world
#hello,
python整数运算结果仍是整数
浮点数运算结果仍然是浮点数
整数和浮点数运算完仍是浮点数
整数除法除不尽仍是整数 余数被直接扔掉
求余运算符号 %
整除符号 /
要想计算精确结果 把整数变成浮点数
11.0 / 4
布尔类型
#->为输出结果
短路计算
a = True
print (a and 'a = T' or 'a = F')
结果不是布尔类型 而是a = T
#->a =T
a = True
print (a and 'a = T' or 'a = F')
#->a = T
在计算a and b 时
如果a是False则根据与运算法则 0&&b结果必然是False
因此返回a
如果a是True 则整个计算结果必定取决于b
因此返回b
在计算a or b 时
如果a是True则根据或运算法则 1 ||b
整个计算结果必定为True 则根据或运算法则
整个结果必定为True
因此返回a
如果a是False则根据或运算法则 0 || b
结果取决于b
因此返回b
所以Python解释器在做布尔运算时,
只要能提前确定计算结果,
它就不会往后算了,直接返回结果。
几个简单的例子
print('hello,',a and 'world')
#->hello, world
a = 'python'
print ('hello,', a or 'world')#hello python a || 1
#hello, python
a = ' '
print ('hello,', a or 'world')#hello world a || 1
#hello,
a = ' '
print('hello,',a and 'world')#hello, world
a = ' '
print('hello,','world' and a )#hello,