×

Python语言及其应用PDF电子书免费下载

消耗积分:6 | 格式:pdf | 大小:15.22 MB | 2020-04-07

NewBoyPlus

分享资料个

  本书内容易于理解,而且读起来生动有趣,是编程和Python初学者不可多得的优秀教程。书中首先介绍了Python的基础知识,然后逐渐深入多种主题,结合教程和攻略式风格来讲解Python 3中的概念。每章结尾的练习可以帮助你巩固所学的知识。

  本书会为你学习Python打下坚实的基础,包括测试、调试、代码复用的最佳实践以及其他开发技巧。同时还会告诉你如何在商业、科学和艺术领域使用Python,并教会你使用多种Python工具和开源包。

  通过阅读本书,你将能够:

  学习简单的数据类型,以及基本的数学和文本操作

  学习用Python内置的数据结构来处理数据

  掌握Python的代码结构和函数的用法

  使用模块和包编写大规模Python程序

  深入理解对象、类和其他面向对象特性

  学习使用普通文件、关系数据库和NoSQL数据库来存储数据

  使用Python构建Web客户端、服务器、API和服务

  管理系统任务,比如程序、进程和线程

  理解并发和网络编程的基础知识

  目录

  前言  xiv

  第1章 Python初探  1

  1.1 真实世界中的Python  5

  1.2 Python与其他语言  5

  1.3 为什么选择Python  7

  1.4 何时不应该使用Python  8

  1.5 Python 2与Python 3  8

  1.6 安装Python  9

  1.7 运行Python  9

  1.7.1 使用交互式解释器  9

  1.7.2 使用Python文件  10

  1.7.3 下一步  11

  1.8 禅定一刻  11

  1.9 练习  11

  第2章 Python基本元素:数字、字符串和变量  13

  2.1 变量、名字和对象  13

  2.2 数字  16

  2.2.1 整数  17

  2.2.2 优先级  20

  2.2.3 基数  21

  2.2.4 类型转换  22

  2.2.5 一个int型有多大  23

  2.2.6 浮点数  24

  2.2.7 数学函数  24

  2.3 字符串  24

  2.3.1 使用引号创建  25

  2.3.2 使用str()进行类型转换  27

  2.3.3 使用\ 转义  27

  2.3.4 使用+ 拼接  28

  2.3.5 使用* 复制  28

  2.3.6 使用[] 提取字符  28

  2.3.7 使用[start:end:step]分片  29

  2.3.8 使用len()获得长度  31

  2.3.9 使用split()分割  32

  2.3.10 使用join()合并  32

  2.3.11 熟悉字符串  32

  2.3.12 大小写与对齐方式  33

  2.3.13 使用replace()替换  34

  2.3.14 更多关于字符串的内容  35

  2.4 练习  35

  第3章 Python容器:列表、元组、字典与集合  36

  3.1 列表和元组  36

  3.2 列表  37

  3.2.1 使用[] 或list()创建列表  37

  3.2.2 使用list()将其他数据类型转换成列表  37

  3.2.3 使用[offset]获取元素  38

  3.2.4 包含列表的列表  39

  3.2.5 使用[offset]修改元素  39

  3.2.6 指定范围并使用切片提取元素  40

  3.2.7 使用append()添加元素至尾部  40

  3.2.8 使用extend()或+=合并列表  40

  3.2.9 使用insert()在指定位置插入元素  41

  3.2.10 使用del删除指定位置的元素  41

  3.2.11 使用remove()删除具有指定值的元素  42

  3.2.12 使用pop()获取并删除指定位置的元素  42

  3.2.13 使用index()查询具有特定值的元素位置  42

  3.2.14 使用in判断值是否存在  42

  3.2.15 使用count()记录特定值出现的次数  43

  3.2.16 使用join()转换为字符串  43

  3.2.17 使用sort()重新排列元素  44

  3.2.18 使用len()获取长度  44

  3.2.19 使用= 赋值,使用copy()复制  45

  3.3 元组  46

  3.3.1 使用()创建元组  46

  3.3.2 元组与列表  47

  3.4 字典  47

  3.4.1 使用{}创建字典  48

  3.4.2 使用dict()转换为字典  48

  3.4.3 使用[key]添加或修改元素  49

  3.4.4 使用update()合并字典  50

  3.4.5 使用del删除具有指定键的元素  51

  3.4.6 使用clear()删除所有元素  51

  3.4.7 使用in 判断是否存在  51

  3.4.8 使用[key]获取元素  52

  3.4.9 使用keys()获取所有键  52

  3.4.10 使用values()获取所有值  53

  3.4.11 使用items()获取所有键值对  53

  3.4.12 使用= 赋值,使用copy()复制  53

  3.5 集合  53

  3.5.1 使用set()创建集合  54

  3.5.2 使用set()将其他类型转换为集合  54

  3.5.3 使用in测试值是否存在  55

  3.5.4 合并及运算符  56

  3.6 比较几种数据结构  58

  3.7 建立大型数据结构  59

  3.8 练习  60

  第4章 Python外壳:代码结构  61

  4.1 使用# 注释  61

  4.2 使用\ 连接  62

  4.3 使用if、elif 和else进行比较  63

  4.4 使用while进行循环  66

  4.4.1 使用break跳出循环  66

  4.4.2 使用continue跳到循环开始  67

  4.4.3 循环外使用else  67

  4.5 使用for迭代  68

  4.5.1 使用break跳出循环  69

  4.5.2 使用continue跳到循环开始  69

  4.5.3 循环外使用else  69

  4.5.4 使用zip()并行迭代  70

  4.5.5 使用range()生成自然数序列  71

  4.5.6 其他迭代方式  71

  4.6 推导式  72

  4.6.1 列表推导式  72

  4.6.2 字典推导式  74

  4.6.3 集合推导式  74

  4.6.4 生成器推导式  74

  4.7 函数  75

  4.7.1 位置参数  79

  4.7.2 关键字参数  79

  4.7.3 指定默认参数值  79

  4.7.4 使用*收集位置参数  80

  4.7.5 使用**收集关键字参数  81

  4.7.6 文档字符串  82

  4.7.7 一等公民:函数  82

  4.7.8 内部函数  84

  4.7.9 闭包  84

  4.7.10 匿名函数:lambda()函数  85

  4.8 生成器  86

  4.9 装饰器  87

  4.10 命名空间和作用域  89

  4.11 使用try和except处理错误  91

  4.12 编写自己的异常  93

  4.13 练习  94

  第5章 Python盒子:模块、包和程序  95

  5.1 独立的程序  95

  5.2 命令行参数  96

  5.3 模块和import语句  96

  5.3.1 导入模块  96

  5.3.2 使用别名导入模块  98

  5.3.3 导入模块的一部分  98

  5.3.4 模块搜索路径  98

  5.4 包  99

  5.5 Python 标准库  99

  5.5.1 使用setdefault()和defaultdict()处理缺失的键  100

  5.5.2 使用Counter()计数  101

  5.5.3 使用有序字典OrderedDict()按键排序  103

  5.5.4 双端队列:栈+队列  103

  5.5.5 使用itertools迭代代码结构  104

  5.5.6 使用pprint()友好输出  105

  5.6 获取更多Python代码  105

  5.7 练习  106

  第6章 对象和类  107

  6.1 什么是对象  107

  6.2 使用class定义类  108

  6.3 继承  109

  6.4 覆盖方法  111

  6.5 添加新方法  112

  6.6 使用super从父类得到帮助  112

  6.7 self的自辩  113

  6.8 使用属性对特性进行访问和设置  114

  6.9 使用名称重整保护私有特性  117

  6.10 方法的类型  118

  6.11 鸭子类型  119

  6.12 特殊方法  120

  6.13 组合  123

  6.14 何时使用类和对象而不是模块  124

  6.15 练习  126

  第7章 像高手一样玩转数据  127

  7.1 文本字符串  127

  7.1.1 Unicode  127

  7.1.2 格式化  134

  7.1.3 使用正则表达式匹配  137

  7.2 二进制数据  144

  7.2.1 字节和字节数组  144

  7.2.2 使用struct转换二进制数据  145

  7.2.3 其他二进制数据工具  148

  7.2.4 使用binascii()转换字节/ 字符串  149

  7.2.5 位运算符  149

  7.3 练习  149

  第8章 数据的归宿  152

  8.1 文件输入/输出  152

  8.1.1 使用write()写文本文件  153

  8.1.2 使用read()、readline()或者readlines()读文本文件  154

  8.1.3 使用write()写二进制文件  156

  8.1.4 使用read()读二进制文件  157

  8.1.5 使用with自动关闭文件  157

  8.1.6 使用seek()改变位置  157

  8.2 结构化的文本文件  159

  8.2.1 CSV  159

  8.2.2 XML  161

  8.2.3 HTML  163

  8.2.4 JSON  163

  8.2.5 YAML  165

  8.2.6 安全提示  166

  8.2.7 配置文件  167

  8.2.8 其他交换格式  168

  8.2.9 使用pickle序列化  168

  8.3 结构化二进制文件  169

  8.3.1 电子数据表  169

  8.3.2 层次数据格式  169

  8.4 关系型数据库  170

  8.4.1 SQL  170

  8.4.2 DB-API  172

  8.4.3 SQLite  172

  8.4.4 MySQL  174

  8.4.5 PostgreSQL  174

  8.4.6 SQLAlchemy  174

  8.5 NoSQL数据存储  179

  8.5.1 dbm family  180

  8.5.2 memcached  180

  8.5.3 Redis  181

  8.5.4 其他的NoSQL  189

  8.6 全文数据库  189

  8.7 练习  190

  第9章 剖析Web  191

  9.1 Web 客户端  192

  9.1.1 使用telnet进行测试  193

  9.1.2 Python的标准Web库  194

  9.1.3 抛开标准库:requests  195

  9.2 Web 服务端  196

  9.2.1 最简单的Python Web服务器  196

  9.2.2 Web服务器网关接口  198

  9.2.3 框架  198

  9.2.4 Bottle  198

  9.2.5 Flask  201

  9.2.6 非Python的Web服务器  204

  9.2.7 其他框架  206

  9.3 Web服务和自动化  207

  9.3.1 webbrowser模块  207

  9.3.2 Web API和表述性状态传递  208

  9.3.3 JSON  209

  9.3.4 抓取数据  209

  9.3.5 用BeautifulSoup来抓取HTML  209

  9.4 练习  210

  第10章 系统  212

  10.1 文件  212

  10.1.1 用open()创建文件  212

  10.1.2 用exists()检查文件是否存在  213

  10.1.3 用isfile()检查是否为文件  213

  10.1.4 用copy()复制文件  213

  10.1.5 用rename()重命名文件  214

  10.1.6 用link()或者symlink()创建链接  214

  10.1.7 用chmod()修改权限  214

  10.1.8 用chown()修改所有者  214

  10.1.9 用abspath()获取路径名  215

  10.1.10 用realpath()获取符号的路径名  215

  10.1.11 用remove()删除文件  215

  10.2 目录  215

  10.2.1 使用mkdir()创建目录  215

  10.2.2 使用rmdir()删除目录  215

  10.2.3 使用listdir()列出目录内容  216

  10.2.4 使用chdir()修改当前目录  216

  10.2.5 使用glob()列出匹配文件  216

  10.3 程序和进程  217

  10.3.1 使用subprocess创建进程  218

  10.3.2 使用multiprocessing创建进程  219

  10.3.3 使用terminate()终止进程  219

  10.4 日期和时间  220

  10.4.1 datetime模块  221

  10.4.2 使用time模块  223

  10.4.3 读写日期和时间  225

  10.4.4 其他模块  227

  10.5 练习  228

  第11章 并发和网络  229

  11.1 并发  230

  11.1.1 队列  231

  11.1.2 进程  231

  11.1.3 线程  232

  11.1.4 绿色线程和gevent  234

  11.1.5 twisted  236

  11.1.6 asyncio  238

  11.1.7 Redis  238

  11.1.8 队列之上  241

  11.2 网络  241

  11.2.1 模式  242

  11.2.2 发布-订阅模型  242

  11.2.3 TCP/IP  245

  11.2.4 套接字  246

  11.2.5 ZeroMQ  250

  11.2.6 scapy  253

  11.2.7 网络服务  253

  11.2.8 Web服务和API  255

  11.2.9 远程处理  256

  11.2.10 大数据和MapReduce  260

  11.2.11 在云上工作  261

  11.3 练习  264

  第12章 成为真正的Python开发者  265

  12.1 关于编程  265

  12.2 寻找Python代码  265

  12.3 安装包  266

  12.3.1 使用pip  266

  12.3.2 使用包管理工具  267

  12.3.3 从源代码安装  267

  12.4 集成开发环境  268

  12.4.1 IDLE  268

  12.4.2 PyCharm  268

  12.4.3 IPython  269

  12.5 命名和文档  269

  12.6 测试代码  270

  12.6.1 使用pylint、pyflakes和pep8检查代码  270

  12.6.2 使用unittest进行测试  272

  12.6.3 使用doctest进行测试  276

  12.6.4 使用nose进行测试  277

  12.6.5 其他测试框架  278

  12.6.6 持续集成  278

  12.7 调试Python代码  278

  12.8 使用pdb进行调试  279

  12.9 记录错误日志  284

  12.10 优化代码  286

  12.10.1 测量时间  286

  12.10.2 算法和数据结构  288

  12.10.3 Cython、NumPy和C扩展  289

  12.10.4 PyPy  289

  12.11 源码控制  289

  12.11.1 Mercurial  290

  12.11.2 Git  290

  12.12 复制本书代码  292

  12.13 更多内容  293

  12.13.1 书  293

  12.13.2 网站  293

  12.13.3 社区  293

  12.13.4 大会  294

  12.14 后续内容  294

  附录A Python的艺术  295

  附录B 工作中的Python  307

  附录C Python的科学  320

  附录D 安装Python 3  339

  附录E 习题解答  349

  附录F 速查表  380

  作者介绍  383

  封面介绍  383

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.obk20.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'Python语言及其应用PDF电子书免费下载',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"//www.obk20.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);