一、数字类型
Python有三种不同的数字类型,整数,浮点数,复数。
整数
Python中的整数是没有长度限制的,位数可以无限大。Python中的除法会保留小数点,6/2=3.0
浮点数
我们试验下 0.1+0.2=多少?Python输出结果并不是0.3!这和IEEE754标准有关(详见计算机组成原理篇)我们如果想要精确计算浮点数,需要用到一个叫decimal的模块。
import decimal
a=decimal.Decimal('0.1')
b=decimal.Decimal('0.2')
print(a+b)
c=decimal.Decimal('0.3')
c==a+b
科学计数法:0.00005Python表示为5e-05,意思为5*10^-5。
复数
复数以1+2j的形式使用。如果我们用x=1+2j,那么可以用x.real获取实部,x.imag获取虚部。(注意都是浮点数)
x=3+5j
x.real
x.imag
运算符
Python中/表示真正的除法。//表示高斯函数,也就是不超过x的最大整数。
对于复数而言,abs表示取模运算。int(x)表示将小数部分直接扔掉,只要整数部分。
pow运算与**运算没有本质区别,只不过pow运算可以加入第三个参数,如pow(a,b,c)表示a**b%c。
二、布尔类型
结果为FALSE的所有可能
定义为false的所有对象:None和False
值为0的数字集合:0,0.0,0j,Decimal(0),Fraction(0,1) Fraction(0,1)表示分子为0分母为1的有理数
空的序列和集合:‘’ (){} [] set() range(0)
比较和逻辑运算符
1=TRUE,0=FALSE,布尔类型其实就是特殊的数字类型。
与逻辑:and 或逻辑:or 非逻辑:not
Python中所有对象都支持真值测试,用于if或while的语句判断,这时表示为逻辑运算。
短路逻辑
表达式3 and 4,结果是4,为什么呢?
短路逻辑指的是,从左往右,只有当第一个操作数的值无法确定逻辑运算的结果时,才对第二个操作数进行求值。
and要求两个操作数结果都为TRUE,右边的结果影响最后结果,所以Python抛出结果4
表达式3 or 4,结果是3
因为两边只要有一个是TRUE就行了,所以将第一个操作数3抛出。
表达式0 and 3 结果是0,
第一个数字0已经表明为假了,所以不必继续往后计算,将0抛出。
表达式0 or 4,结果是4
虽然第一个数字0是FALSE,但是右边结果也影响最终运算,因此抛出4.