python中,数字提供了标量贮存和直接访问,是不可更改类型,变更数字的值会生成新的对象,也就说,我们可以通过等号(=)给一个变量赋值,或者给之前创建的变量重新赋值,每次赋值实际上是创建了一个新的对象,引用自另一个新的对象,删除引用可使用del语句。
python的数字类型包括整型、长整型、布尔型、双精度浮点型、十进制浮点型和复数。布尔型bool也是一种整型,仅包括True和False。长整型long与整型int的区别是在数字末尾添加字母l或L,表示的范围仅与机器字长有关,python将会统一整型和长整型,使得整型的表示范围足够大。浮点型float之所以说是双精度浮点型是因为其表示方式类似于C语言的双精度浮点型double,占8个字节,其中52个比特位表示底,11个比特位表示指数,1个比特位表示符号,支持十进制表示法和科学计数表示法,如4.3e24、-1.609E-19,那么十进制浮点型与双精度浮点型有什么区别呢?因为双精度浮点型精度很大,有时却需要一个精度小点的形式,这便是十进制浮点型,可使用decimal模块中的Decimal类。复数complex表示为real+imgj,j可以是大写的J,复数的real属性为复数的实部,imag属性为复数的虚部,conjugate()方法返回该复数的共轭复数。
python的位运算符包括取反(~)、按位与(&)、按位或(|)、安位异或(^)、左移(<<)、右移(>>),仅适用于整数。
下面介绍数字相关的内建函数及模块。
数值工厂函数——
bool(obj):返回obj对象的布尔值,也就是obj.__nonzero__()方法的返回值。
int(obj,base=10):返回一个字符串或数值对象的整数表示,类似string.atoi()。
long(obj,base=10):返回一个字符串或数值对象的长整数表示,类似string.atol()。
float(obj):返回一个字符串或数值对象的浮点数表示,类似string.atof()。
complex(str):返回一个字符串或数值对象的复数表示。
complex(real,imag=0.0):根据给定的实数及一个可选的虚数部分生成一个复数对象。
数值运算函数——
abs(num):返回num的绝对值。
coerce(num1,num2):将num1和num2转换为同一类型,然后以一个元组的形式返回。
divmod(num1,num2):除法与取余运算的结合,返回一个元组(num1/num2,num1%num2)。
pow(num1,num2,mod=1):取num1的num2次方,如果提供mod参数,则计算结果再对mod进行取余运算。
round(flt,ndig=0):接受一个浮点数flt并对其四舍五入,保存ndig位小数。
整数转换函数——
hex(num):将数字转换成十六进制数并以字符串形式返回。
oct(num):将数字转换成八进制数并以字符串形式返回。
chr(num):将ASCII值的数字转换成ASCII字符,范围只能是0<=num<=255。
ord(chr):接受一个ASCII或Unicode字符,即长度为一的字符串,返回相应的ASCII或Unicode值。
unichr(num):接受Unicode码值,返回对应的Unicode字符。
数值相关模块——
decimal:十进制浮点运算类Decimal。
array:高效数值数组。
math/cmath:标准C库数学运算函数,常规数学运算在math模块,复数运算在cmath模块。
operator:数学运算符的函数实现。
random:多种伪随机数生成器,如类似于range的randrange()、类似于randint的uniform()、random()、choice()等。
另外,__future__模块包括了某些数字相关的特性,如division指令,导入division后,传统的地板除法将同浮点除法相同。