Python的数字类型
在Python中,数字并不是一个真正的对象类型,而是一个类似类型的分类。
Python数字类型的完整工具包括:
- 整数和浮点数
- 复数
- 固定精度的十进制数
- 有理分数
- 集合
- 布尔类型
- 无穷的整数精度
- 各种数字内置函数和模块
1、数字常量:
整数和浮点数常量。
Python2.6中的整数:一般整数和长整数。
Python3.0中的整数:一个单独的类型。
十六进制数、八进制和二进制常量。
复数。
编写其他的数字类型。
2、内置数学工具和扩展:
表达式操作符
内置数学函数
公用模块
3、Python表达式操作符:
表达式是处理数字的最基本的工具。
①、混合操作所遵循的操作符优先级
②、括号分组的子表达式
③、混合类型自动升级
④、预习:运算符
在实际应用中的数字
1、变量和基本的表达式:
- 变量在它第一次赋值时创建。
- 变量在表达式中使用将被替换为它们的值。
- 变量在表达式中使用以前必须已赋值。
- 变量像对象一样不需要在一开始进行声明。
2、数字显示的格式:
3、比较:一般的和连续的:
4、除法:传统除法、Floor除法和真除法:
- X/Y:传统除法和真除法。在Python2.6或之前的版本中,这个操作对于整数会省去小数部分,对于浮点数会保持小数部分。在Python3.0版本中将会变成真除法(无论任何类型都会保持小数部分)。
- X//Y:Floor除法。在Python2.2中新增的操作,在Python2.6和Python3.0中均能使用。这个操作不考虑操作对象的类型,总会省略掉结果的小数部分,剩下最小的能整除的整数部分。
①、支持两个Python版本
②、Floor除法VS截断除法
③、为什么截断很重要
5、整数精度:
6、复数:
7、十六进制、八进制、二进制计数:
oct函数会将十进制数转换为八进制数,hex函数会将十进制数转换为十六进制数,而bin函数会将十进制数转换为二进制。
内置的int函数会将一个数字的字符串变换为一个整数,并可以通过定义的第二个参数来确定变换后的数字的进制。
eval函数将会把字符串作为Python代码。
你能够使用字符串格式化方法调用和表达式将一个整数转换成八进制数和十六进制数的字符串。
8、位操作:
除了一般的数学运算(加法、减法等),Python也支持C语言的大多数数学表达式。这包括那些把整数当作二进制位串对待的操作。
9、其他的内置数学工具:
除了核心对象类型以外,Python还支持用于数字处理的内置函数和内置模块。
其他数字类型
1、小数数字:
比其他数据类型复杂一些,小数是通过一个导入的模块调用函数后创建的,而不是通过运行常量表达式创建的。
小数是有固定的精度的浮点值。
①、基础知识:
我们能够通过调用在decimal模块中的Decimal的构造函数创建一个小数对象,并传入一个字符串,这个字符串有我们希望在结果中显示的小数位数。
当不同精度的小数在表达式中混编时,Python自动升级为小数位数最多的。
②、设置全局精度:
decimal模块中的其他工具可以用来设置所有小数数值的精度。decimail.getcontext().prec=x,将全局精度设置为x。
③、小数上下文管理器:
2、分数类型:
Python2.6和Python3.0引入了一种新的数字类型——分数,它实现了一个有理数对象。
①、基础知识:
分数是前面小节所介绍的已有的小数固定精度类型的“近亲”,它们都可以通过固定小数位数和指定舍入或截断策略来控制数值精度。
>>>from fractions import Fraction
>>>x=Fraction(1,3)
②、数值精度:
③、转换和混合类型:
为了支持分数转换,浮点数对象现在有一个方法,能够产生它们的分子和分母比,分数有一个from_float方法,并且float接受一个Fraction作为参数。
集合
Python2.4引入了一种新的类型——集合(set),这是一些唯一的、不可变的对象的一个无序集合(collection),这些对象支持与数学集合理论相对应的操作。
1、Python2.6中的集合基础知识:
要创建一个集合对象,向内置的set函数传递一个序列或其他的可迭代的对象。
集合通过表达式操作符支持一般的数学集合运算。除了表达式,集合对象还提供了对应这些操作的方法,以及更多的支持改变集合的方法,集合add方法插入一个项目、update是按位置求并集,remove根据值删除一个项目(在任何集合实例或集合类型名上运行dir来查看所有可用的方法)。
2、Python3.0中的集合常量:
Python3.0添加了新的集合常量形式,该形式使用前面为字典所保留的花括号。
空的集合必须通过内置函数set来创建,并且以同样的方式显示。
3、不可变限制和冻结集合:
集合只能包含不可变的(即可散列的)对象类型。
如果需要在另一个集合中存储一个集合,可以像调用set一样来调用frozenset,但是,它创建一个不可变的集合,该集合不可修改并且可以嵌套到其他集合中。
4、Python3.0中的集合解析:
5、为什么使用集合:
布尔型
Python如今正式地有了一种明确的布尔型数据类型,叫做bool,其值为True和False,并且其值True和False是预先定义的内置的变量名。
数字扩展
尽管Python的核心数字类型提供的功能对于大多数应用程序已经够用了,还是有大量的第三方开源扩展可以用来解决更加专门的需求。
本章小结
本章介绍了Python数字对象类型和能够应用于它们的操作。在这过程中,我们学习了标准的整数和浮点数类型,以及一些较少见和不常用的类型。例如,复数、分数和集合。我们也学习了Python的表达式语法、类型转换、位操作以及各种在脚本中编写数字的常量形式。