- 译者序
- 前言
- 第1章 问答环节
- 第2章 Python 如何运行程序
- 第3章 如何运行程序
- 第4章 介绍 Python 对象类型
- 第5章 数字
- 第6章 动态类型简介
- 第7章 字符串
- 第8章 列表与字典
- 第9章 元组、文件及其他
- 第10章 Python 语句简介
- 第11章 赋值、表达式和打印
- 第12章 if 测试和语法规则
- 第13章 while 和 for 循环
- 第14章 迭代器和解析,第一部分
- 第15章 文档
- 第16章 函数基础
- 第17章 作用域
- 第18章 参数
- 第19章 函数的高级话题
- 第20章 迭代和解析,第二部分
- 第21章 模块:宏伟蓝图
- 第22章 模块代码编写基础
- 第23章 模块包
- 第24章 高级模块话题
- 第25章 OOP:宏伟蓝图
- 第27章 更多实例
- 第28章 类代码编写细节
- 第29章 运算符重载
- 第30章 类的设计
- 第31章 类的高级主题
- 第32章 异常基础
- 第34章 异常对象
- 第35章 异常的设计
- 第36章 Unicode 和字节字符串
- 字符串基础知识
- Python 的字符串类型
- 文本和二进制文件
- Python 3.0 中的字符串应用
- 转换
- 编码 Unicode 字符串
- 编码非ASCII文本
- 编码和解码非ASCII文本
- 其他 Unicode 编码技术
- 转换编码
- 在 Python 2.6 中编码 Unicode 字符串
- 源文件字符集编码声明
- 使用 Python 3.0 Bytes 对象
- 序列操作
- 创建 bytes 对象的其他方式
- 混合字符串类型
- 使用 Python 3.0(和 Python 2.6)bytearray 对象
- 使用文本文件和二进制文件
- Python 3.0 中的文本和二进制模式
- 类型和内容错误匹配
- 使用 Unicode 文件
- 在 Python 3.0 中处理 BOM
- Python 2.6 中的 Unicode 文件
- Python 3.0 中其他字符串工具的变化
- Struct二进制数据模块
- pickle对象序列化模块
- XML解析工具
- 本章小结
- 本章习题
- 习题解答
- 第37章 管理属性
- 第38章 装饰器
- 第39章 元类
- 附录A 安装和配置
- 附录B 各部分练习题的解答
- 作者介绍
- 封面介绍
第5章 数字
在上一章,我们对Python的核心对象进行了概览。尽管该章已经介绍了最核心的术语,但是由于篇幅有限,没有涉及过多的细节。本章将开始对数据类型概念进行更详尽的学习。本章将会探索与数字相关的类型,例如,集合和布尔型。让我们开始探索第一个数据类型的分类:Python的数字类型。
Python的数字类型
Python的数字类型是相当典型的,如果你有其他语言的编程经验的话,也许会很熟悉。它能够保持记录你的银行余额、到火星的距离、访问网站的人数以及任何其他的数字特性。
在Python中,数字并不是一个真正的对象类型,而是一组类似类型的分类。Python不仅支持通常的数字类型(整数和浮点数),而且能够通过常量去直接创建数字以及处理数字的表达式。此外,Python为更高级的工作提供了很多高级数字编程支持和对象。Python数字类型的完整工具包括:
·整数和浮点数
·复数
·固定精度的十进制数
·有理分数
·集合
·布尔类型
·无穷的整数精度
·各种数字内置函数和模块
本章从基本的数字开始,然后介绍这个列表中的其他工具。然而,在开始介绍编程之前,下面两个小节首先概述一下如何在脚本中编写和处理数字。
数字常量
在基本类型中,Python提供了:整数(正整数和负整数)和浮点数(带有小数部分的数字)。Python还允许我们使用十六进制、八进制和二进制常量来表示整数,提供一个复数类型,并且允许整数具有无穷的精度(只要内存空间允许,它可以增长成任意位数的数字)。表5-1展示了Python数字类型在程序中的显示方式(作为常量)。
一般来说,Python的数字类型是很容易使用的,但是有些编程的概念需要在这里强调一下。
整数和浮点数常量
整数以十进制数字的字符串写法出现。浮点数带一个小数点,也可以加上一个科学计数标志e或者E。如果编写一个带有小数点或幂的数字,Python会将它变成一个浮点数对象,并且当这个对象用在表达式中时,将启用浮点数(而不是整数)的运算法则。浮点数就像C语言中的“双精度”一样实现,因此,其精度与用来构建Python解释器的C编译器所给定的双精度一样。
Python 2.6中的整数:一般整数和长整数
Python 2.6中有两种整数类型:一般整数(32位)和长整数(无穷精度),并且一个整数可以以l或L结尾,从而强迫其成为长整数。由于当整数的值超过32位的时候会自动转换为长整数,我们不需要自己输入字母L,当需要额外的精度的时候,Python会自动地转换为长整数。
Python 3.0中的整数:一个单独的类型
在Python 3.0中,一般整数和长整数类型已经合二为一了,只有整数这一种,它自动地支持Python 2.6的单独的长整数类型所拥有的无穷精度。因此,整数在程序中不再用末尾的l或L表示,并且整数也不再会显示出这个字符。除此之外,这一修改并没有影响到大多数程序,除非你确实进行类型测试来检测Python 2.6的长整数。
十六进制数、八进制和二进制常量
整数可以编写为十进制(以10为基数)、十六进制(以16为基数)、八进制(以8为基数)和二进制(以2为基数)形式。十六进制数以0x或0X开头,后面接十六进制的数字0~9和A~F。十六进制的数字编写成大写或小写都可以。八进制数常量以数字0o或0O开头(0和小写或大写的字母"o"),后面接着数字0~7构成的字符串。在Python 2.6及更早的版本中,八进制常量也可以写成前面只有一个0的形式,但在Python 3.0中不能这样(这种最初的八进制形式太容易与十进制数混淆,因此用新的0o的形式替代了)。Python 2.6和Python 3.0中的新的二进制常量,以0b或0B开头,后面跟着二进制数字(0~1)。
注意所有这些常量在程序代码中都产生一个整数对象,它们仅仅是特定值的不同语法表示而已。内置函数hex(I)、oct(I)和bin(I)把一个整数转换为这3种进制表示的字符串,并且int(str,base)根据每个给定的进制把一个运行时字符串转换为一个整数。
复数
Python的复数常量写成实部+虚部的写法,这里虚部是以j或J结尾。其中,实部从技术上讲可有可无,所以可能会单独表示虚部。从内部看来,复数都是通过一对浮点数来表示的,但是对复数的所有的数字操作都会按照复数的运算法则进行。也可以通过内置函数complex(real,imag)来创建复数。
编写其他的数字类型
我们将在本章后面看到,还有表5-1中所没有包含的其他的、更高级的数字类型。其中的一些通过调用导入的模块中的函数来创建(例如,十进制数和分数),其他的一些拥有它们自己的常量语法(例如,集合)。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论