Python支持多种数字类型:整型、长整型、布尔型、双精度浮点型、十进制浮点型和复数

数字提供了标量贮存和直接访问,不可更改。(变更数字的值会生成新的对象)

给变量更新值的时候,并不是更改了对象(数字是不可更改的对象),而是新建了一个对象,将这个对象的值引用给变量

按照Python的法则,无法真正删除一个数值对象,仅仅是不再使用它。当然,你可以使用del来删除一个数值对象的应用。

Python的标准整型等价于C的(有符号)长整型。一般以十进制表示(八进制以数字“0”开始,十六进制以“0x”或“0X”开始)

Python的长整型能表达的数值取决于机器支持的(虚拟)内存大小有关。在整型后面加个L(大写小写都可以,当然现在几乎没有什么区别,除非你明确想要长整型),表示这个整型是长整型。(尽量使用L而不是l以免和1弄混,这里可以使用str()函数和repr()函数来读取,这样你就可以看到他们的区别)可以是十进制、八进制、十六进制。

关于Python中复数的几个概念:

  • 虚数不能单独存在,他们总是和一个值为0.0的实数部分一起来构成一个复数
  • 复数由实数部分和虚数部分构成
  • 表示虚数的语法:real+imagj
  • 实数部分和虚数部分都是浮点型
  • 虚数部分必须有后缀j或者J

复数的属性如下:

复数属性
num.real 该复数的实部
num.imag 该复数的虚部
num.conjugate() 返回该复数的共轭复数

两个数字类型相加的时候,Python会自动检查,如果两个操作数是同一种数据类型,没有必要进行类型转换,仅当两个操作数类型不一致时,Python才会去检查是否可以将其中一个转换成另外一个。转换过程遵守以下几个原则:

  • 如果有一个操作数是复数,另一个被转换为复数
  • 否则,如果有一个操作数是浮点型,另一个操作数被转换为浮点型
  • 否则,如果有一个操作数是长整型,另一个操作数被转换为长整型
  • 否则,必然都是普通整型,无需类型转换。

数字类型的转换是自动进行的,如果明确指定某种数据类型进行特殊转换的场合,Python提供了coerce()内建函数来实现。

第五章 数字

传统除法:对整型的除法舍去了小数部分仅保留整数部分,对浮点型执行真正的除法。

可以执行from __future__ import division来让所有除法都返回真实的商

//:可以对所有数值类型只执行地板除(舍去小数部分仅保留整数部分)

算术操作符
算术操作符
expr 1 ** expr 2 表达式一的表达式二乘方
+expr 1 结果符号不变
-expr 1 对结果符号取负
expr 1 * expr 2 表达式一乘以表达式二
expr 1/expr 2 表达式一除以表达式二(传统除或者真正除)
expr 1//expr 2 表达式一地板除表达式二
expr 1%expr 2 表达式一对表达式二取余
expr 1+expr 2 表达式一加表达式二
expr 1-expr 2 表达式一减表达式二
** 高于单目操作符(可以加括号来改变)

Python整型支持标准位运算:

  • 负数会被当成正数的2进制补码处理
  • 左移或者右移N位等同于无溢出检查2的N次幂运算
  • 对长整型来说,位操作符使用一种经修改的2进制补码形式,使得符号位可以无限向左扩展
  • 取反等同于数字单目操作符优先级(所有位操作符中优先级最高)。左移和右移优先级次之,但低于加减法。与、或、异最低。

位操作符
~num 对数的每一位取反。结果为-(num+1)
num1<<num2 num1左移num2位
num1>>num2 num1右移num2位
num1&num2 num1与num2按位与
num1^num2 num1异或num2
num1|num2 num1与num2按位或

工厂函数:bool(obj)、int(obj,base=10)(直接截取小数部分)、long(obj,base=10)、float(obi)、complex(str) or complex(real,inag=0.0)

数值运算内建函数
abs(num) 返回num的绝对值
coerce(num1,num2) 将num1和num2转化为同一类型,然后以元组的形式返回
floor(num) 得到最接近num但小于num的整型(返回浮点型)
divmod(num1,num2) 返回元组(num1/num2,num1%num2)
pow(num1,num2,mod=1) 取num1的num2次方,提供mod参数后,计算结果再对mod取余
round(flt,ndig=1) 接受浮点型flt并四舍五入,保存ndig位小数,ndig默认为0

仅适用于整型的内建函数
hex(num) 将数字转换成十六进制并以字符串返回
oct(num) 将数字转换成八进制并以字符串返回
chr(num) 将ASCII值的数字转换为ASCII字符(0<=num<=255)
ord(chr) 接受一个ASCII或Unicode字符,返回对应值
unichr(num) 接受Unicode码值返回对应字符

布尔类型主要概念:

  • 有两个永不改变的值True或False
  • 布尔型是整型的子类,但是不能再被继承而生成它的子类
  • 没有__nonzero__()方法的对象的默认值是True
  • 对于值为零的任何数字或空集(空列表、空元组、空字典等),在Python中布尔值都是False
  • 对于数学运算,True=1,False=0
  • True和False等同关键字,请不要随意修改。

数字类型相关模块
decimal 十进制浮点运算类Decimal
array 高效数值数组(字符、整型、浮点型等)
math/cmath 标准C库数学运算函数。常规数学在math模块,复数运算在cmath模块
operator 数字操作符的函数实现
random 多种伪随机数生成器

random常用函数
randint() 两个整型参数,返回二者间随机整型
randrange() 接受和range()函数一样的参数,随机返回range([start,]stop[,step])结果的一项
uniform() 几乎和randint()一样,不过返回二者间的浮点型
random() 类似uniform(),不过下限恒等0.0,上限恒等1.0
choice 随机返回给定序列的一个元素



相关文章: