从第四章介绍对象后,后面就开始介绍数值类型,字符串,列表,元组,字典。这一章是数值类型。
数值类型是:标量存储,不可变,直接访问。
python支持的数值类型有:标准整型,长整型,布尔型,双精度浮点型,和复数。
a = 42 # 创建数值对象。
a += 2 # 更新数值对象。 事实上这样是生成了一个新的数值对象44, 原来的42会被python自动回收。
del a # 删除对象的引用。 你自己不能将数值对象42给删除,对象42所占的内存有python自动回收。
整型:布尔型,标准整型,长整型。
布尔型:布尔型只有两个值True和False。布尔型是标准整型的子类,而且不能再被继承。没有__nonzero__()方法的对象的默认值为True。在数值运算时,True和False分别为1和0。注意目前True和False都不是关键字。别犯类似于下面的错误:
>>>True = 0
>>>bool(True)
False
标准整型:在32位机器上其取值范围是:-2^31 ~ 2^31 - 1.
长整型:与C语言中长整型不同,这里的长整型能表示的数值大小与机器的内存大小有关。 123L(后面加上L表示是长整型)。
双精度浮点型:相当于C语言中的double类型。
复数:由实数部分和虚数部分共同组成表示,实数部分和虚数部分都是浮点型,虚数部分必须有后缀j或J。4j,2.3+7.3j,1.23e-045+6.7e+089j都是复数。复数的几个内建属性,如num为复数,则num.real为复数的实部,num.imag为复数的虚部,num.conjugate()返回该复数的共轭。
有关类型转换的规则:
如果有一个数为复数,另一个操作数也转换为复数,
否则,如果有一个数为浮点数,另一个操作数也转换为浮点数,
否则,如果有一个数为长整型,另一个操作数也转换为长整型,
否则,必都未整型,无需转换。
python提供内建函数coerce()来实现这种转换,下面再叙。
操作符(第4章说了关系操作符,逻辑操作符):
算数操作符:+,-,*,/,%,//,**。 加,减和乘不再多说。
关于除法:不加参数打开python时,默认的参数为-Qold,说明执行传统的除法行为,传统的除法行为即:1/2的结果为0(和C语言中的整数除法相同)。如果使用-Qnew参数或者使用了from __future__ import division语句,则采用新的除法方式,即:1/2的结果为0.5, 就是数学里计算时的除法。也可以使用//来进行除法,称为地板除,不管操作数是整型还是浮点型,该除法都舍去小数部分,返回的数字为比真正的商小的最接近的数字,即-1//2的结果为-1。
取余(%):整数的取余易理解。对于浮点数的取余的计算方法是:x%y == x-(math.floor(x/y)*y)。对复数的取余的计算方式是: x%y == x-(math.floor((x/y).real)*y)。
幂运算(**):**就表示求幂,3**2 == 9。 注意:**运算符的优先级高于左侧的-,低于右侧的-。
即:-3**2 == -9, 4**-1 == 0.25
位操作符(仅适用于整型,~,<<,>>,&,^,|)按括号中的从左到右为优先级从高到低。
~num == -(num+1) : 即~30 == -31
python中针对数值类型的内建函数(分为两类:用于数值类型转换的函数,用于运算的函数)
(1) 转换工厂函数:
bool(obj):返回obj的布尔值,即obj.__nonzero__()方法的返回值。
int(obj, base=10):返回一个字符串或数值对象的整型表示,base为可选的进制参数。不能转换复数为整型。转换浮点数时,是直接截去后面的小数部分。
long(obj, base=10):转换为长整型。
float(obj):转换为浮点型。
complex(str) or complex(real, imag=0.0):返回一个复数对象。
(2) 功能函数:
abs(num):返回num的绝对值,对于复数是返回其模。
coerce(num1, num2):将num1, num2转换为同一种类型(根据上面的类型转换规则),然后以元组形式返回它们。
divmod(num1, num2):返回一个包含商和余数的元组,
对于整型返回(num1//num2, num1%num2),
对于浮点型返回(math.floor(num1/num2), num1%num2),
对于复数返回(math.floor((num1/num2).real), num1%num2)。
num1%num2按照取余操作符的计算规则计算。
pow(num1, num2, mod=1):等价于(num1 ** num2) % mod
round(flt, ndig=0):对flt进行四舍五入,ndig指明保留的小数位个数,默认为0。返回值类型为浮点型。
math.floor(num):返回的值为小于或等于num的最大的整型值。但返回值类型仍为浮点型。
(3) 仅能作用于整型的几个函数:
hex(num):将num转换为十六进制字符串
oct(num):将num转换为八进制字符串
chr(num):将ASCII值的数值转换为对应的ASCII字符,0<=num<=255, 不在此范围则错误。
ord(char):接受一个长度为1的字符串,获得相应的ASCII值或unicode值
unichr(num):接受一个unicode值,返回相应的unicode字符。
python中与数值类型运算相关的模块有:decimal,array,math/cmath,operator,random。具体可以查阅python标准库手册。
阅读(2098) | 评论(0) | 转发(0) |