书海网短评:
适读人群:python程序员python初学者《Python3.5从零开始学》专门针对Python新手量身设计,涵盖了Python3.5实际开发的重要知识点。编者使用通俗易懂的描述和丰富的示例代码,并结合日常
《Python3.5从零开始学》专门针对Python新手量身设计,涵盖了Python3.5实际开发的重要知识点。
编者使用通俗易懂的描述和丰富的示例代码,并结合日常生活中的一些小事件,使《Python 3.5从零开始学》读起来生动有趣,一些复杂的问题也以简单的形式展现出来,读者学起来不仅轻松,而且可以充分感受到Python的魅力。
《Python3.5从零开始学》学编程必须动手才能见到成效,《Python 3.5从零开始学》在设计上特别强调讲练结合,注重实践,不仅在讲解的过程中结合大量代码示例,同时适时穿插小项目演练,以锻炼读者的程序设计能力。
各章安排了程序调试、问题解答、温故知新等主题,帮助读者发现程序错误,解答学习中的困惑,巩固所学知识。
《Python3.5从零开始学》最后通过两个Python热门应用——数据分析和网络爬虫,《Python3.5从零开始学》介绍了Python在实际开发中的方法和技巧,旨在提升读者的开发技能,达成学以致用之目标。
《Python3.5从零开始学》专门针对Python新手量身定做,涵盖了Python3实际开发的重要知识点,内容包括:Python语言的类型和对象、操作符和表达式、编程结构和控制流、函数、序列、多线程、正则表达式、面向对象编程、文件操作、网络编程、邮件收发、数据库操作等,提供Python爬虫、数据处理项目范例,各章还安排了调试、问题解答、温故知新、牛九小试等内容,以帮助读者学会处理程序异常、解答学习困惑、巩固知识、学以致用。
《Python3.5从零开始学》通俗易懂、示例丰富、代码可读性及可操作性强。非常适合Python3.x初学者、想学习和了解Python3的程序员,也可作为Python网课、培训及大专院校教学用书。
刘宇宙,计算科学学学士,多年工作经验,先后供职于上海海鼎、上海云卯、上海宏力达,目前供职于上海透云科技码上加事业部,担任软件工程师,从事大数据研发。先后从事过卡系统的研发,云计算项目中IAAS系统的研发,大数据项目研发,物联网研发。对Java、Python有深入研究。Python技术爱好者,在CSDN发表原创Python博文多篇。
目录
第1章进入Python3.5的精彩世界1
1.1Python的起源2
1.2Python的应用场合3
1.3从2.7到3.5,Python的新特性5
1.4如何学习Python6
1.5Python环境构建7
1.5.1在Windows系统中安装Python7
1.5.2在Linux和UNIX系统中安装Python14
1.5.3在MacOS系统中安装Python17
1.5.4其他版本18
1.6从helloword开始18
1.7调试19
1.8问题解答20
1.9温故知新,学以致用21
第2章开启Python之旅22
2.1认识程序23
2.1.1程序23
2.1.2调试24
2.1.3语法错误24
2.1.4运行错误24
2.1.5语义错误25
2.2数据类型25
2.2.1整型25
2.2.2浮点型27
2.2.3复数28
2.2.4数据类型转换28
2.2.5常量29
2.3变量和关键字29
2.3.1变量29
2.3.2变量名称33
2.4语句34
2.5表达式35
2.6运算符和操作对象36
2.6.1什么是运算符和操作对象36
2.6.2算术运算符36
2.6.3比较运算符38
2.6.4赋值运算符39
2.6.5位运算符40
2.6.6逻辑运算符41
2.6.7成员运算符42
2.6.8身份运算符43
2.6.9运算符优先级43
2.7字符串操作45
2.8注释49
2.9调试50
2.10问题解答50
2.11温故知新,学以致用51
第3章列表和元组52
3.1通用序列操作53
3.1.1索引53
3.1.2分片54
3.1.3序列相加57
3.1.4乘法58
3.1.5成员资格59
3.1.6长度、最小值和最大值60
3.2列表60
3.2.1更新列表61
3.2.2嵌套列表65
3.2.3列表方法65
3.3元组74
3.3.1tuple函数75
3.3.2元组的基本操作75
3.3.3元组内置函数76
3.4列表与元组的区别77
3.5调试78
3.6问题解答79
3.7温故知新,学以致用79
第4章字符串81
4.1字符串的基本操作82
4.2字符串格式化83
4.2.1字符串格式化符号83
4.2.2字符串格式化元组85
4.3字符串方法87
4.3.1find()方法87
4.3.2join()方法88
4.3.3lower()方法89
4.3.4upper()方法90
4.3.5swapcase()方法91
4.3.6replace()方法91
4.3.7split()方法92
4.3.8strip()方法92
4.3.9translate()方法93
4.4调试94
4.5问题解答95
4.6温故知新,学以致用95
第5章字典96
5.1字典的使用97
5.2创建和使用字典97
5.2.1dict函数98
5.2.2字典的基本操作98
5.2.3字典的格式化字符串100
5.2.4字典和列表的区别100
5.3字典方法101
5.3.1clear()方法101
5.3.2copy()方法102
5.3.3fromkeys()方法103
5.3.4get()方法104
5.3.5keyindict方法105
5.3.6items()方法105
5.3.7keys()方法105
5.3.8setdefault()方法106
5.3.9update()方法107
5.3.10values()方法107
5.4调试108
5.5问题解答108
5.6温故知新,学以致用109
第6章条件、循环和其他语句110
6.1使用文本编辑器111
6.2import的使用113
6.2.1import语句113
6.2.2使用逗号输出116
6.3别样的赋值116
6.3.1序列解包116
6.3.2链式赋值118
6.3.3增量赋值118
6.4语句块119
6.5条件语句119
6.5.1布尔变量的作用120
6.5.2if语句121
6.5.3else子句122
6.5.4elif子句123
6.5.5嵌套代码块124
6.5.6更多操作124
6.5.7断言127
6.6循环128
6.6.1while循环128
6.6.2for循环129
6.6.3循环遍历字典元素131
6.6.4迭代工具132
6.6.5跳出循环134
6.6.6循环中的else子句136
6.7pass语句137
6.8牛刀小试——猜字游戏编写138
6.9Python程序调试140
6.10问题解答141
6.11温故知新,学以致用141
第7章函数142
7.1调用函数143
7.2定义函数145
7.3函数的参数147
7.3.1必须参数148
7.3.2关键字参数149
7.3.3默认参数149
7.3.4可变参数153
7.3.5组合参数155
7.4执行流程155
7.5形参和实参156
7.6变量作用域157
7.6.1局部变量157
7.6.2全局变量159
7.7有返回值和无返回值函数161
7.8为什么要有函数163
7.9返回函数163
7.10递归函数166
7.11匿名函数169
7.12偏函数171
7.13牛刀小试——经典排序之快速排序实现172
7.14调试173
7.15问题解答174
7.16温故知新,学以致用174
第8章面向对象编程176
8.1理解面向对象177
8.1.1什么是面向对象编程177
8.1.2面向对象术语简介177
8.2类的定义与使用178
8.2.1类的定义178
8.2.2类的使用178
8.3深入类179
8.3.1类的构造方法179
8.3.2类的访问权限184
8.4继承189
8.5多态192
8.6封装196
8.7多重继承197
8.8获取对象信息199
8.9类的专有方法202
8.10牛刀小试——出行建议207
8.11调试209
8.12问题解答209
8.13温故知新,学以致用210
第9章异常211
9.1什么是异常212
9.2异常处理212
9.3抛出异常213
9.4捕捉多个异常215
9.5使用一个块捕捉多个异常216
9.6捕捉对象217
9.7全捕捉217
9.8异常中的else218
9.9自定义异常219
9.10finally子句220
9.11异常和函数222
9.12bug的由来223
9.13温故知新,学以致用223
第10章日期和时间224
10.1日期和时间225
10.1.1时间戳225
10.1.2时间格式化符号225
10.1.3struct_time元组226
10.2time模块227
10.2.1time()函数227
10.2.2localtime([secs])函数227
10.2.3gmtime([secs])函数228
10.2.4mktime(t)函数228
10.2.5asctime([t])函数229
10.2.6ctime([secs])函数229
10.2.7sleep(secs)函数230
10.2.8clock()函数230
10.2.9strftime(format[,t])函数231
10.2.10strptime(string[,format])函数232
10.2.11三种时间格式转化232
10.3datetime模块232
10.4日历模块236
10.5牛刀小试——时间大杂烩237
10.6调试242
10.7温故知新,学以致用242
第11章正则表达式244
11.1认识正则表达式245
11.2re模块247
11.2.1re.match函数247
11.2.2re.search方法247
11.2.3re.match与re.search的区别248
11.3贪婪模式和非贪婪模式249
11.4替换250
11.5编译250
11.6温故知新,学以致用251
第12章文件操作252
12.1打开文件253
12.1.1文件模式254
12.1.2缓冲255
12.2基本文件方法255
12.2.1读和写256
12.2.2读写行258
12.2.3关闭文件260
12.2.4文件重命名261
12.2.5删除文件262
12.3对文件内容进行迭代262
12.3.1按字节处理262
12.3.2按行操作263
12.3.3使用fileinput实现懒加载式迭代264
12.3.4文件迭代器264
12.4StringIO函数264
12.5序列化与反序列化265
12.5.1一般序列化与反序列化266
12.5.2JSON序列化与反序列化267
12.6调试269
12.7问题解答269
12.8温故知新,学以致用270
第13章多线程271
13.1线程和进程272
13.1.1进程272
13.1.2线程272
13.1.3多线程与多进程272
13.2使用线程273
13.2.1全局解释器锁273
13.2.2退出线程274
13.2.3Python的线程模块274
13.3_thread模块274
13.4threading模块277
13.5线程同步282
13.6线程优先级队列284
13.7线程与进程比较287
13.7.1线程切换287
13.7.2计算密集型与IO密集型288
13.7.3异步IO288
13.8调试289
13.9问题解答289
13.10温故知新,学以致用290
第14章发送和接收电子邮件291
14.1电子邮件介绍292
14.2发送邮件293
14.2.1SMTP发送邮件293
14.2.2发送HTML格式的邮件296
14.2.3发送带附件的邮件297
14.2.4发送图片298
14.2.5同时支持HTML和Plain格式300
14.2.6加密SMTP301
14.3POP3接收邮件302
14.3.1POP3下载邮件302
14.3.2解析邮件303
14.4调试305
14.5问题解答305
14.6温故知新,学以致用306
第15章网络编程307
15.1网络编程初识308
15.2TCP/IP简介308
15.3网络设计模块309
15.3.1Socket简介309
15.3.2socket模块309
15.3.3socket对象(内建)方法311
15.4TCP编程312
15.4.1客户端312
15.4.2服务器315
15.5UDP编程319
15.6urllib模块322
15.6.1GET请求322
15.6.2POST请求323
15.7调试324
15.8问题解答325
15.9温故知新,学以致用325
第16章操作数据库326
16.1数据库介绍327
16.2Python数据库API327
16.2.1全局变量328
16.2.2异常328
16.2.3连接和游标329
16.2.4类型330
16.3数据库操作331
16.3.1数据库连接331
16.3.2创建数据库表332
16.3.3数据库插入333
16.3.4数据库查询334
16.3.5数据库更新335
16.3.6数据库删除337
16.4事务338
16.5调试339
16.6问题解答339
16.7温故知新,学以致用340
第17章项目实战——爬虫341
17.1了解爬虫342
17.2爬虫的原理342
17.3爬虫常用的几种技巧343
17.3.1基本方法343
17.3.2使用代理服务器343
17.3.3cookie处理344
17.3.4伪装成浏览器344
17.3.5登录345
17.4爬虫示例——抓取豆瓣电影Top250影评数据345
17.4.1确定URL格式346
17.4.2页面抓取346
17.4.3提取相关信息347
17.4.4写入文件348
17.4.5完善代码348
17.5本章小结351
第18章项目实战——数据分析352
18.1数据持久化353
18.2模块化357
18.2.1数据库操作模块化357
18.2.2文件生成模块化360
18.2.3邮件发送模块化361
18.3数据分析的实现365
18.4项目小结369
附录370
A.1数学函数371
A.2随机函数371
A.3三角函数371
A.4Python字符串内建函数372
A.5列表方法373
A.6字典内置方法374
A.7正则表达式模式374
结束语376
第2章开启Python之旅
本章主要介绍Python的基础知识,为后续章节学习相关内容做铺垫。
2.1认识程序
旅行前,我们要先熟悉地名,知道去哪里旅行,将会经过哪里。学习编程语言也一样,在学习之前要先了解程序、调试、语法错误、运行错误、语义错误等知识。
2.1.1程序
我们都知道,出门旅行肯定要选择交通工具,现在常用的交通工具有飞机、火车、轮船、汽车等,我们会根据自己的喜好和一些其他因素选择对应的交通工具。
编程语言也一样,我们选择一门编程语言就相当于选择一种交通工具,那么,编程语言的“交通”工具是什么呢?是程序。
程序是指根据语言提供的指令按照一定逻辑顺序对获得的数据进行运算,并最终返回给我们的指令和数据的组合。在这里,运算的含义是广泛的,既包括数学计算之类的操作(如加减乘除),又包括寻找和替换字符串之类的操作。数据依据不同的需要组成不同的形式,处理后的数据也可能以另一种方式体现。
程序是用语言写成的。语言分高级语言和低级语言。
低级语言有时叫机器语言或汇编语言。计算机真正“认识”并能够执行的代码,在我们看来是一串0和1组成的二进制数字,这些数字代表指令和数据。早期的计算机科学家就是用这些枯燥乏味的数字编程。低级语言的出现是计算机程序语言的一大进步,它用英文单词或单词的缩写代表计算机执行的指令,使编程的效率和程序的可读性都有了很大提高,但它仍然和机器硬件关联紧密,不符合人类的语言和思维习惯,而且要想把用低级语言写的程序移植到其他平台,就必须重写。
高级语言的出现是程序语言发展的必然结果,也是计算机语言向人类的自然语言和思维方式逐步靠近和模拟的结果。由于高级语言是对人类逻辑思维的描述,用高级语言写程序会感到比较自然,读起来也比较容易,因此现在大部分程序都是用高级语言写的。
高级语言设计的目的是让程序按照人类的思维和语言习惯书写,是面向人的,而不是面向机器。我们用着方便,机器却无法读懂,更谈不上运行。所以,用高级语言写的程序必须经过“翻译”程序的处理,将其转换成机器可执行的代码,才能运行在计算机上。如果想把高级语言写的程序移植到其他的平台,只需在它的基础上做少量更改就可以了。
高级语言翻译成机器代码有两种方法,即解释和编译。
解释型语言是边读源程序边执行。高级语言就是源代码。解释器每次会读入一段源代码,并执行它,接着再读入并执行,如此重复,直到结束,图2-1显示了解释器的结构。这个有点类似在乡村里搭乘公交,只要碰到路上有人等公交,就停下来载人。
编译型语言是将源代码完整的编译成目标代码后才能执行,以后在执行时不需要再编译。图2-2显示了一个编译器的结构,这个有点类似我们乘坐的直达车,所有要乘车的人都从起点上车,中途不再搭载其他乘客。
图2-1解释型语言的执行方式
图2-2编译型语言的执行方式
2.1.2调试
每当远游时,司机肯定要做几件事情,如检查发动机是否正常、检查油箱、检查各项安全系统和液压系统等,为的是尽可能减少在路途中发生意外情况。
我们编程也是一样的,需要经常做检查。有一些问题编译器会帮助我们检查出来,问题查出后,简单的可以直接解决,对于稍微复杂的,需要通过调试来解决。
程序是很容易出错的。程序错误被称为bug,查找bug的过程称为调试(debugging)。我们在第1章中已经介绍过一个很简单的调试示例。
2.1.3语法错误
在生活中有时会碰到这样的情况,你本应买今天去某地的火车票,已经买好了,但当进站检票时,系统告诉你票不是今天的,这时你才发现购买车票时输错了日期。
程序中这种错误比生活中出现的次数多很多,称为语法错误(syntaxerrors)。Python程序在语法正确的情况下才能运行,否则解释器会显示一条错误信息。语法指的是程序的结构和此结构的规则。比如第1章的('Hello,world!'),括号中的单引号是成对的,执行时才能正确执行。如果输入('Hello,world!)或(Hello,world!')就会报错,这属于语法错误。
我们在阅读文章或听人讲话时,可以容忍大多数语法错误,不过Python并不如此宽容。程序中只要出现一处语法错误,Python就会显示错误信息并退出,从而无法通过编译。就如我们进站,一旦票不满足进站要求,就无法进入一样。
在编程生涯的开始阶段,可能每踏出一步都会碰到大量语法方面的错误,随着经验的增加,犯错会减少,踩过坑后,后面遇到类似的坑就能快速应对了。
2.1.4运行错误
我们可能在奔跑的交通工具内愉悦地欣赏着远途的风景,但此时交通工具突然慢慢停下来了,并且司机对大家宣布说,交通工具抛锚了。例如,出现轮胎破损、没油了、发动机坏了、撞车事故等。
在Python中经常会遇到类似的错误,称之为运行时错误(runtimeerrors)。
即使是看起来完美无缺的程序,在运行的过程中也会出现错误。有人说,计算机不是善于精确计算吗?确实如此。不过错的不是计算机,而是我们人类。计算机说到底是人类设计的,是我们所用的工具,和电视机、汽车从本质上来说是一样的。鉴于现在计算机软硬件的理论水平、工业制造水平、使用者的水平等一些内在、外在的因素,出现错误并不稀奇,且程序越复杂,出现异常的概率越大。异常的种类很多,如内存用尽、除数为零的除法等都可能导致异常。Python为了把错误的影响降至最低,提供了专门的异常处理语句。
运行时错误一般在代码量偏多时才容易遇到。
2.1.5语义错误
经常乘坐交通工具,难免有乘错车的情况出现,比如你本应该乘坐801路车,却坐上了802路车,结果到达了不同的地方。
在Python中经常会发生类似的问题,此类问题称为语义错误(semanticerrors)。
程序即使有语义错误,也能正常运行,不会产生任何错误信息,但得到的结果和我们预料的不一致。发生这种错误一般是我们对语句的运行机制了解得不够透彻,自以为它应该如此运行,实际上却不是这样。还有可能是你解决问题的思路本身就是错的,写的程序当然是错的。
查找语义错误并不像我们坐错了车那么容易,它可能需要你根据结果进行推理,不过推理的过程没有那么简单易行,需要查看程序输出,并尝试弄明白到底做了什么。
……
前言
什么是Python,你为什么要使用它?
Python是一种解释型的、面向对象的、带有动态语义的高级程序设计语言。这里有很多术语,你可以在阅读《Python 3.5从零开始学》的过程中逐渐弄懂。
Python是一种使你在编程时能够保持自己风格的程序设计语,使用它你可以使用清晰易懂的程序来实现你想要的功能。并且如果你之前没有任何编程经历,那么既简单又强大的Python就是你入门的完美选择。
伴随着云计算、大数据等技术的迅速崛起,市场对Python人才的需求和市场人才的匮乏,让长期沉默的Python语言一下子备受众人的关注,《Python 3.5从零开始学》可说是应运而生,另外,目前Python广泛使用的是2.7版本,新版本Python3.5带来了很多新特性,《Python 3.5从零开始学》是以Python3.5版本编写而成的,对于想学习和了解Python3.5的使用和特性的读者,《Python 3.5从零开始学》可以说是最佳选择。
《Python 3.5从零开始学》的特色
《Python 3.5从零开始学》专门针对Python新手量身定做,是编者学习和使用Python开发过程中的体会和经验总结,涵盖了实际开发中所有的重要知识点,内容详尽,代码可读性及可操作性强。
《Python 3.5从零开始学》主要介绍了Python语言的类型和对象、操作符和表达式、编程结构和控制流、函数、序列、多线程、正则表达式、面向对象编程、文件操作、网络编程、邮件收发、数据库操作等,并安排了Python爬虫、数据处理项目范例,各章还安排了调试、问题解答、温故知、牛九小试等章节实例等内容,以帮助读者学会处理程序异常、解答学习困惑、巩固知识、学以致用。
《Python 3.5从零开始学》的另一个特色是,使用通俗易懂的描述和丰富的示例代码,并结合日常生活中的一些小事件,使《Python 3.5从零开始学》读起来尽可能生动有趣,让复杂的问题以简单的形式展现出来,使读者学来轻松,充分感受到学习Python的乐趣和魅力。
《Python 3.5从零开始学》的内容
《Python 3.5从零开始学》共分18章,各章内容安排如下:
第1章主要介绍Python的起源、应用场合、前景以及Python3相对于Python2的一些新特性。
第2章主要介绍Python的基础知识,为后续章节学习相关内容做铺垫。
第3章将重点介绍列表和元组。
第4章将重点介绍字符串的格式化、分割、搜索等方法。
第5章将介绍字典,字典是一种通过名字引用值的数据结构。
第6章从import语句开始介绍,然后逐步深入介绍条件语句、循环语句以及列表推导式等一些更深层次的语句。
第7章主要介绍函数,函数是组织好的、可重复使用的,用来实现单一或相关联功能的代码段。
第8章主要介绍Python面向对象编程的特性,Python从设计之初就是一门面向对象语言,它提供一些语言特性支持面向对象编程。
第9章将带领读者学习如何处理各种异常,以及创建和自定义异常。
第10章将具体讲解Python中日期和时间的使用。
第11章主要介绍正则表达式的基本使用。
第12章主要介绍如何使用Python在硬盘上创建、读取和保存文件。
第13章主要介绍Python中的多线程编程。
第14章主要介绍如何使用Python语言发送和接收邮件。
第15章将重点介绍Python在网络编程方面的特性。
第16章将重点介绍在Python3.5中使用PyMySQL连接数据库,并实现简单的增、删、改、查。
第17章将根据前面所学讲解一个爬虫的实战项目。
第18章将结合大数据的相关思维,使用已有数据做一些简单的数据分析。
读者对象
Python3.x初学者。
想学习和了解Python的程序员。
Python网课、培训及大专院校教学用书。
致谢
在《Python 3.5从零开始学》交稿之际,感谢清华大学出版社的王金柱编辑,在《Python 3.5从零开始学》编写的过程中,王编辑给予了很多指导和修改意见。同时感谢家人和朋友在写作期间给予的安静写作环境,让笔者不被更多琐事打扰,从而专心于写作。感谢你们,没有你们的帮助与关心,《Python 3.5从零开始学》不能如期完成。
技术群及问题解答方式
Python技术服务qq群:634027520
CSDN技术博客:youzhouliu
技术问答email:jxgzyuzhouliu@163.com
编者
2017年3月









