内容介绍
《Python核心编程(第二版)》是经典的Python指导书,在第一版的基础上进行了全面升级。全书分为两个部分:第1部分占据了大约三分之二的篇幅,阐释这门语言的“核心”内容,包括基本的概念和语句、语法和风格、Python对象、数字类型、序列类型、映射和集合类型、条件和循环、文件和输入/输出、错误和异常、函数和函数式编程、模块、面向对象编程、执行环境等内容:第2部分则提供了各种高级主题来展示可以使用Python做些什么,包括正则表达式、网络编程、网络客户端编程、多线程编程、图形用户界面编程、Web编程、数据库编程、扩展Python 和一些其他材料。
目录
- 第1部分Python核心
- 第1章欢迎来到Python世界
- 1.1什么是Python
- 1.2起源
- 1.3特点
- 1.3.1高级
- 1.3.2面向对象
- 1.3.3可升级
- 1.3.4可扩展
- 1.3.5可移植性
- 1.3.6易学
- 1.3.7易读
- 1.3.8易维护
- 1.3.9健壮性
- 1.3.10高效的快速原型开发工具
- 1.3.11内存管理器
- 1.3.12解释性和(字节)编译性
- 1.4下载和安装Python
- 1.5运行Python
- 1.5.1命令行上的交互式解释器
- 1.5.2从命令行启动脚本
- 1.5.3集成开发环境
- 1.5.4其他的集成开发环境和执行环境
- 1.6Python文档
- 1.7比较Python(Python与其他语言的比较)
- 1.8其他实现
- 1.9练习
- 第2章快速入门
- 2.1程序输出,print语句及“Hello World!”
- 2.2程序输入和raw_input()内建函数
- 2.3注释
- 2.4操作符
- 2.5变量和赋值
- 2.6数字
- 2.7字符串
- 2.8列表和元组
- 2.9字典
- 2.10代码块及缩进对齐
- 2.11if语句
- 2.12while循环
- 2.13for循环和range()内建函数
- 2.14列表解析
- 2.15文件和内建函数open()、file()
- 2.16错误和异常
- 2.17函数
- 2.17.1如何定义函数
- 2.17.2如何调用函数
- 2.17.3默认参数
- 2.18类
- 2.19模块
- 2.19.1如何导入模块
- 2.19.2如何访问一个模块函数或访问一个模块变量
- 2.20实用的函数
- 2.21练习
- 第3章Python基础
- 3.1语句和语法
- 3.1.1注释(#)
- 3.1.2继续(\\)
- 3.1.3多个语句构成代码组(:)
- 3.1.4代码组由不同的缩进分隔
- 3.1.5同一行书写多个语句(;)
- 3.1.6模块
- 3.2变量赋值
- 3.2.1赋值操作符
- 3.2.2增量赋值
- 3.2.3多重赋值
- 3.2.4“多元”赋值
- 3.3标识符
- 3.3.1合法的Python标识符
- 3.3.2关键字
- 3.3.3内建
- 3.3.4专用下划线标识符
- 3.4基本风格指南
- 3.4.1模块结构和布局
- 3.4.2在主程序中书写测试代码
- 3.5内存管理
- 3.5.1变量定义
- 3.5.2动态类型
- 3.5.3内存分配
- 3.5.4引用计数
- 3.5.5垃圾收集
- 3.6第一个Python程序
- 3.7相关模块和开发工具
- 3.8练习
- 第4章Python对象
- 4.1Python 对象
- 4.2标准类型
- 4.3其他内建类型
- 4.3.1类型对象和type类型对象
- 4.3.2None--Python的Null对象
- 4.4内部类型
- 4.4.1代码对象
- 4.4.2帧对象
- 4.4.3跟踪记录对象
- 4.4.4切片对象
- 4.4.5省略对象
- 4.4.6XRange 对象
- 4.5标准类型操作符
- 4.5.1对象值的比较
- 4.5.2对象身份比较
- 4.5.3布尔类型
- 4.6标准类型内建函数
- 4.6.1type()
- 4.6.2cmp()
- 4.6.3str()和repr()(及``操作符)
- 4.6.4type()和isinstance()
- 4.6.5Python类型操作符和内建函数总结
- 4.7类型工厂函数
- 4.8标准类型的分类
- 4.8.1存储模型
- 4.8.2更新模型
- 4.8.3访问模型
- 4.9不支持的类型
- 4.10练习
- 第5章数字
- 5.1数字简介
- 5.1.1如何创建数值对象并用其赋值(数字对象)
- 5.1.2如何更新数字对象
- 5.1.3如何删除数字对象
- 5.2整型
- 5.2.1布尔型
- 5.2.2标准整型
- 5.2.3长整型
- 5.2.4整型和长整型的统一
- 5.3双精度浮点型
- 5.4复数
- 5.5操作符
- 5.5.1混合模式操作符
- 5.5.2标准类型操作符
- 5.5.3算术操作符
- 5.5.4*位操作符(只适用于整型)
- 5.6内建函数与工厂函数
- 5.6.1标准类型函数
- 5.6.2数字类型函数
- 5.6.3仅用于整型的函数
- 5.7其他数字类型
- 5.7.1布尔“数”
- 5.7.2十进制浮点型
- 5.8相关模块
- 5.9练习
- 第6章序列:字符串、列表和元组
- 6.1序列
- 6.1.1标准类型操作符
- 6.1.2序列类型操作符
- 6.1.3内建函数(BIF)
- 6.2字符串
- 6.3字符串和操作符
- 6.3.1标准类型操作符
- 6.3.2序列操作符切片([]和[:])
- 6.4只适用于字符串的操作符
- 6.4.1格式化操作符(%)
- 6.4.2字符串模板: 更简单的替代品
- 6.4.3原始字符串操作符(r/R)
- 6.4.4Unicode字符串操作符(u/U)
- 6.5内建函数
- 6.5.1标准类型函数
- 6.5.2序列类型函数
- 6.5.3字符串类型函数
- 6.6字符串内建函数
- 6.7字符串的独特特性
- 6.7.1特殊字符串和控制字符
- 6.7.2三引号
- 6.7.3字符串不变性
- 6.8Unicode
- 6.8.1术语
- 6.8.2什么是Unicode
- 6.8.3怎样使用Unicode
- 6.8.4Codec是什么
- 6.8.5编码解码
- 6.8.6把Unicode应用到实际应用中
- 6.8.7从现实中得来的教训
- 6.8.8Python的Unicode支持
- 6.9相关模块
- 6.10字符串关键点总结
- 6.11列表
- 6.12操作符
- 6.12.1标准类型操作符
- 6.12.2序列类型操作符
- 6.12.3列表类型操作符和列表解析
- 6.13内建函数
- 6.13.1标准类型函数
- 6.13.2序列类型函数
- 6.13.3列表类型内建函数
- 6.14列表类型的内建函数
- 6.15列表的特殊特性
- 6.16元组
- 6.17元组操作符和内建函数
- 6.17.1标准类型操作符、序列类型操作符和内建函数
- 6.17.2元组类型操作符和内建函数、内建方法
- 6.18元组的特殊特性
- 6.18.1不可变性给元组带来了什么影响
- 6.18.2元组也不是那么“不可变”
- 6.18.3默认集合类型
- 6.18.4单元素元组
- 6.18.5字典的关键字
- 6.19相关模块
- 6.20*拷贝Python对象、浅拷贝和深拷贝
- 6.21序列类型小结
- 6.22练习
- 第7章映像和集合类型
- 7.1映射类型:字典
- 7.1.1如何创建字典和给字典赋值
- 7.1.2如何访问字典中的值
- 7.1.3如何更新字典
- 7.1.4如何删除字典元素和字典
- 7.2映射类型操作符
- 7.2.1标准类型操作符
- 7.2.2映射类型操作符
- 7.3映射类型的内建函数和工厂函数
- 7.3.1标准类型函数[type()、str()和cmp()]
- 7.3.2映射类型相关的函数
- 7.4映射类型内建方法
- 7.5字典的键
- 7.5.1不允许一个键对应多个值
- 7.5.2键必须是可哈希的
- 7.6集合类型
- 7.6.1如何创建集合类型和给集合赋值
- 7.6.2如何访问集合中的值
- 7.6.3如何更新集合
- 7.6.4如何删除集合中的成员和集合
- 7.7集合类型操作符
- 7.7.1标准类型操作符(所有的集合类型)
- 7.7.2集合类型操作符(所有的集合类型)
- 7.7.3集合类型操作符(仅适用于可变集合)
- 7.8内建函数
- 7.8.1标准类型函数
- 7.8.2集合类型工厂函数
- 7.9集合类型内建方法
- 7.9.1方法(所有的集合方法)
- 7.9.2方法(仅适用于可变集合)
- 7.9.3操作符和内建方法比较
- 7.10集合类型总结表
- 7.11相关模块
- 7.12练习
- 第8章条件和循环
- 8.1if语句
- 8.1.1多重条件表达式
- 8.1.2单一语句的代码块
- 8.2else语句
- 8.3elif(即else-if)语句
- 8.4条件表达式(即“三元操作符”)
- 8.5while语句
- 8.5.1一般语法
- 8.5.2计数循环
- 8.5.3无限循环
- 8.6for语句
- 8.6.1一般语法
- 8.6.2用于序列类型
- 8.6.3用于迭代器类型
- 8.6.4range()内建函数
- 8.6.5xrange() 内建函数
- 8.6.6与序列相关的内建函数
- 8.7break语句
- 8.8continue语句
- 8.9pass语句
- 8.10再谈else语句
- 8.11迭代器和iter()函数
- 8.11.1什么是迭代器
- 8.11.2为什么要迭代器
- 8.11.3如何迭代
- 8.11.4使用迭代器
- 8.11.5可变对象和迭代器
- 8.11.6如何创建迭代器
- 8.12列表解析
- 8.13生成器表达式
- 8.14相关模块
- 8.15练习
- 第9章文件和输入输出
- 9.1文件对象
- 9.2文件内建函数(open()和file())
- 9.2.1工厂函数file()
- 9.2.2通用换行符支持(UNS)
- 9.3文件内建方法
- 9.3.1输入
- 9.3.2输出
- 9.3.3文件内移动
- 9.3.4文件迭代
- 9.3.5其他
- 9.3.6文件方法杂项
- 9.4文件内建属性
- 9.5标准文件
- 9.6命令行参数
- 9.7文件系统
- 9.8文件执行
- 9.9永久存储模块
- 9.9.1pickle和marshal模块
- 9.9.2DBM风格的模块
- 9.9.3shelve模块
- 9.10相关模块
- 9.11练习
- 第10章错误和异常
- 10.1什么是异常
- 10.1.1错误
- 10.1.2异常
- 10.2Python 中的异常
- 10.3检测和处理异常
- 10.3.1try-except语句
- 10.3.2包装内建函数
- 10.3.3带有多个except的try语句
- 10.3.4处理多个异常的except语句
- 10.3.5捕获所有异常
- 10.3.6“异常参数”
- 10.3.7在应用使用我们封装的函数
- 10.3.8else子句
- 10.3.9finally子句
- 10.3.10try-finally语句
- 10.3.11try-except-else-finally:厨房一锅端
- 10.4上下文管理
- 10.4.1with语句
- 10.4.2*上下文管理协议
- 10.5*字符串作为异常
- 10.6触发异常
- 10.7断言
- 10.8标准异常
- 10.9*创建异常
- 10.10(现在)为什么用异常
- 10.11到底为什么要异常
- 10.12异常和sys模块
- 10.13相关模块
- 10.14练习
- 第11章函数和函数式编程
- 11.1什么是函数?
- 11.1.1函数vs过程
- 11.1.2返回值与函数类型
- 11.2调用函数
- 11.2.1函数操作符
- 11.2.2关键字参数
- 11.2.3默认参数
- 11.2.4参数组
- 11.3创建函数
- 11.3.1def语句
- 11.3.2声明与定义比较
- 11.3.3前向引用
- 11.3.4函数属性
- 11.3.5内部/内嵌函数
- 11.3.6*函数(与方法)装饰器
- 11.4传递函数
- 11.5Formal Arguments
- 11.5.1位置参数
- 11.5.2默认参数
- 11.6可变长度的参数
- 11.6.1非关键字可变长参数(元组)
- 11.6.2关键字变量参数(字典)
- 11.6.3调用带有可变长参数对象函数
- 11.7函数式编程
- 11.7.1匿名函数与lambda
- 11.7.2内建函数apply()、filter()、map()、reduce()
- 11.7.3偏函数应用
- 11.8变量作用域
- 11.8.1全局变量与局部变量
- 11.8.2globa语句
- 11.8.3作用域的数字
- 11.8.4闭包
- 11.8.5作用域和lambda
- 11.8.6变量作用域和名称空间
- 11.9*递归
- 11.10生成器
- 11.10.1简单的生成器特性
- 11.10.2加强的生成器特性
- 11.11练习
- 第12章模块
- 12.1什么是模块
- 12.2模块和文件
- 12.2.1模块名称空间
- 12.2.2搜索路径和路径搜索
- 12.3名称空间
- 12.3.1名称空间与变量作用域比较
- 12.3.2名称查找、确定作用域、覆盖
- 12.3.3无限制的名称空间
- 12.4导入模块
- 12.4.1import语句
- 12.4.2from-import语句
- 12.4.3多行导入
- 12.4.4扩展的import语句(as)
- 12.5模块导入的特性
- 12.5.1载入时执行模块
- 12.5.2导入(import)和加载(load)
- 12.5.3导入到当前名称空间的名称
- 12.5.4被导入到导入者作用域的名字
- 12.5.5关于__future__
- 12.5.6警告框架
- 12.5.7从ZIP文件中导入模块
- 12.5.8“新的”导入钩子
- 12.6模块内建函数
- 12.6.1__import__()
- 12.6.2globals()和locals()
- 12.6.3reload()
- 12.7包
- 12.7.1目录结构
- 12.7.2使用from-import导入包
- 12.8模块的其他特性
- 12.8.1自动载入的模块
- 12.8.2阻止属性导入
- 12.8.3不区分大小的导入
- 12.8.4源代码编码
- 12.8.5导入循环
- 12.8.6模块执行
- 12.9相关模块
- 12.10练习
- 第13章面向对象编程
- 13.1引言
- 13.2面向对象编程
- 13.2.1面向对象设计与面向对象编程的关系
- 13.2.2现实中的问题
- 13.2.3*常用术语
- 13.3类
- 13.3.1创建类
- 13.3.2声明与定义
- 13.4类属性
- 13.4.1类的数据属性
- 13.4.2Methods
- 13.4.3决定类的属性
- 13.4.4特殊的类属性
- 13.5实例
- 13.5.1初始化:通过调用类对象来创建实例
- 13.5.2__init__()“构造器”方法
- 13.5.3__new__()“构造器”方法
- 13.5.4__del__()“解构器”方法
- 13.6实例属性
- 13.6.1“实例化”实例属性(或创建一个更好的构造器)
- 13.6.2查看实例属性
- 13.6.3特殊的实例属性
- 13.6.4建类型属性
- 13.6.5实例属性vs类属性
- 13.7绑定和方法调用
- 13.7.1调用绑定方法
- 13.7.2调用非绑定方法
- 13.8静态方法和类方法
- 13.8.1staticmethod()和classmethod()内建函数
- 13.8.2使用函数修饰符
- 13.9组合
- 13.10子类和派生
- 13.11继承
- 13.11.1__bases__类属性
- 13.11.2通过继承覆盖方法
- 13.11.3从标准类型派生
- 13.11.4多重继承
- 13.12类、实例和其他对象的内建函数
- 13.12.1issubclass()
- 13.12.2isinstance()
- 13.12.3hasattr()、getattr()、setattr()、delattr()
- 13.12.4dir()
- 13.12.5super()
- 13.12.6vars()
- 13.13用特殊方法定制类
- 13.13.1简单定制(RoundFloat2)
- 13.13.2数值定制(Time60)
- 13.13.3迭代器(RandSeq和AnyIter)
- 13.13.4*多类型定制(NumStr)
- 13.14私有化
- 13.15*授权
- 13.15.1包装
- 13.15.2实现授权
- 13.16新式类的高级特性(Python 2.2 )
- 13.16.1新式类的通用特性
- 13.16.2__slots__类属性
- 13.16.3__getattribute__()特殊方法
- 13.16.4描述符
- 13.16.5元类和__metaclass__
- 13.17相关模块和文档
- 13.18练习
- 第14章执行环境
- 14.1可调用对象
- 14.1.1函数
- 14.1.2方法
- 14.1.3类
- 14.1.4类的实例
- 14.2代码对象
- 14.3可执行的对象声明和内建函数
- 14.3.1callable()
- 14.3.2compile()
- 14.3.3eval()
- 14.3.4exec
- 14.3.5input()
- 14.3.6使用Python在运行时生成和执行Python代码
- 14.4执行其他(Python)程序
- 14.4.1导入
- 14.4.2execfile()
- 14.4.3将模块作为脚本执行
- 14.5执行其他(非Python)程序
- 14.5.1os.system()
- 14.5.2os.popen()
- 14.5.3os.fork()、os.exec*()、os.wait*()
- 14.5.4os.spawn*()
- 14.5.5subprocess 模块
- 14.5.6相关函数
- 14.6受限执行
- 14.7结束执行
- 14.7.1sys.exit() and SystemExit
- 14.7.2sys.exitfunc()
- 14.7.3os._exit() 函数
- 14.7.4os.kill() Function
- 14.8各种操作系统接口
- 14.9相关模块
- 14.10练习
- 第2部分高级主题
- 第15章正则表达式
- 15.1引言/动机
- 15.2正则表达式使用的特殊符号和字符
- 15.2.1用管道符号(|)匹配多个正则表达式模式
- 15.2.2匹配任意一个单个的字符(.)
- 15.2.3从字符串的开头或结尾或单词边界开始匹配(^/$ /\\b /\\B )
- 15.2.4创建字符类([])
- 15.2.5指定范围(-)和否定(^)
- 15.2.6使用闭包操作符(*, ,?,