廖雪峰python教程打印版(完整版)(.pdf)

所需积分/C币:48 2016-10-08 16:17:02 5MB PDF
收藏 收藏 26
举报

这是继“第一部分”后完整版的pdf,并为其添加了书签。不过没有包括“实战部分”,原因注明在文档末尾了,大家下载后顺便给个评分嘛。
19.1协程. .231 19.2 asencio ,.283 19. 3 async/await 225 19.4aiohttp 28实战∴ ·····.:·.:··:·····;.··.·....··;····.···...······ 298 From cameocus 1 Python基础 Python是一和计算机编程话言。计算机编程语言和我们日常使用的自然语言有所不同,最大的区别就是,自然语言在不 同旳语境下有不同的理解,而计算机要根据编程语言执行任努,就必须保证编程语言写岀的程序决不能有歧乂,所以,任 何一种编程语言都有自己的一套语法,编译器或者解释器就是贠责把符合语法的程序代码转换成υ能够执行的机器码, 然后执行。 Python不例外。 Python的语法比较简单,采用缩进方式,写出来的代码就像卜面的样子。 print absolute value of an integer a=19 if a )=0: print(a) print(-a) 以#开头的语句是注释,注释是给人看的,可以是任意内容,解释器会忽略掉注释。其他每一行都是一个语句,当语句以 冒号:结尾时,缩进的语句视为代码块。 缩进有利有弊。好处是强迫你写出格式化的代码,但没有规定缩进是几个空格还是Tab。按照约定俗成的管理,应该始终 坚持使用4个空格的缩进。缩进的另一个好处是强迫你写出缩进较少的代码,你会倾向于把一段很长的代码拆分成若干函 数,从而得到缩进较少的代码。 缩进的坏处就是κ复制一粘贴”功能失效了,这是最坑爹的地方。当你重构代码时,粘贴过去的代码必须重新检查缩进是 否正确。此外,IDE很难像格式化]ava代码那样格式化 Python代码 最后,请务必注意, Python程序是大小写敏感的,如果写错了大小写,程序会报错。 Python使用缩进来组织代码块,请务必遵守约定俗成的习惯,坚持使用4个空格的缩。 在文本编辑器中,需要设置把τab自动转换为4个空格,确保不混用Tab和空格 11数据类型和变量 数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值。但是,计算能处理的 远不止数值,还可以处理文木、图形、音频、视频、网页等各种各样的数据,不同的数据,需要定义不同的数据类型。在 Python中,能够直接处理的数据类型有以下几种: 整数 Python可以处理仁意大小的整数,当然包括负整数,在程序中的表示方法和数学上的写法一模一样,例如:1,108 888,日,等等。计算机由于使用二进制,所以,有时候用十六进刽表示整数比较方便,十六进制用x前缀和日-9,a-f表 示,例如:8xff08,8xa5b4c3d2,等等 浮点数 浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表小时,一个浮点数的小数点位置是可变的,比如 1.23×109和12.3X1是完全柑等的。浮点数可以用数学写法,如1.23,3.14,-9.01,等等。但是对于很大或很小的浮 点数,就必须用科学计数法表示,把18用e替代,1.23X19就是1.23e9,或者12.3e8,日.8812可以写成1.2e-5, 等等。 整数和浮点数在计算杋内部存储的方式是不同的,整数运算永远是精确的(除法难道也是精确的?是的!),而浮点数运 算则可能会有四舍五入的误差。 字符串 字符串是以单引号'或双引号"括起来的任意文本,比如'abc","xyz"等等。请注意,或""本身只是一种表示方式,不 是字符串的一部分,因此,字符串'abc'只有a,b,c这3个字符。如果'本身也是一个字符,那就可以用""括起来,比如 "ImOK"包含的字符是I,',m,空格,0,K这6个字符。 如果字符串内部既包含’又包含"怎么办?可以用转义字符\来标识,比如: I\'m\"OK\" 表示的字符中内谷是 I OK" 转义字符\可以转义很多字符,比如\n表示换行,\t表示訇表符,字符\本身要转义,所以\表示的字符就是\,可以 在 Python的交互式命令行用 print()打印字符串看看 I m ok >> print('I\'m learning\pYthon. ' I 'm learning nt("\\n") 如果字符串里面有很多字符都需要转义,就需要加很多\,为了简化, Python还允许用r表小'内部的字符串默认不 转义,可以自己试试 >> print('\\t\’) >> print(r\\t\\' \\t\ 如果字符串内部有很多换行,用\n写在一行旦不好阅读,为了简化, Python允许用 '的格式表小多行内容,可 以自己试试 >>>print( '1 line2 line3) line1 line2 line3 上面是在交互式命令行内输入,注意在输入多行内容时,提示符由>>>变为..,提示你可以接着上一行输入。如果写成 程序,就是 line1 名行字符串'.."'还可以在前面加上r使用,请自行测试。 布尔值 布尔值和布尔代数的表示完全一致,一个布尔值只有True、 False两种值,要么是True,要么是 False,在 Python中, 可以直接用True、 False表小布尔值(请注意大小写),也可以通过布尔运算计算出来: >>> True and true True >> True and false False >> False and false False >>>5〉3and3>1 true or运算是或运算,只要其中有一个为True,or运算结果就是True >> True or true >> True or false True >>>False or false False >>5>30r1>3 True not运算是非运算,它是一个单目运算符,把True变成 False,Fa1se变成True: >> not True False >> not false True >>>not1>2 True 布尔值纤常用在条件判断中,比如: if age >=18: print('adult) e⊥se print( ' teenager 空值 空值是 Python里一个特殊的值,用None表示。None不能理解为日,因为是有意义的,而None是一个特殊的空值。 此外, Python还提供」列表、字典等多种数据类型,还允许创建自定义数据类型,我们后面会继续讲到 变量 变量的概念基本上和初中代数的方程变量是一致的,只是在计算机程序中,变量不仅可以是数字,还可以是任意数据类 型。变量在程序屮就是用一个变量名表示了,变量名必须是大小写英文、数宁和的组合,且不能用数宁开头,比如: a=1 变量a是一个整数 t987=Te87 变量t887是一个字符串。 Answer True 变量 Answer是一个布尔值True 在 Python中,等号=是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的 变量,例如 a=123#a是整数 print(a) a='ABC'#a交为字符字 print(a) 这和变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。静态语言在定义变量时必须指定变量类型 如果赋值的时候类型不匹配,就会报错。例如]ava是静态语言,赋值语句如下(//表小注释): inta=123;∥/a是整数类型变量 a="ABC";/借误;不能把字符解给整型变量 和静语言相比,动态语言更灵活,就是这个原因。 请不要把赋值语句的等号等同于数学的等号。比如下面的代码: X=10 如果从数学上理解ⅹ=X+2那无论如何是不成立的,在程序中,赋值语句先计算右侧的表达式ⅹ+2,得到结果12, 再赋给变量ⅹ。由于ⅹ之前的值是10,重新赋值后,x的值变成12。 最后,坦解变量在计算机内存中的表示也非常重要。当我们写: ABC 时, Python解释器干了两件事情: 1.在内存中创建了一个'ABC的字符串 2.在内存中创建」一个名为a的变量,并把它指向'ABC 也可以把一个变量a赋值给另一个变量b,这个操作实际上是把变量b指向变量a所指向的数据,例如下面的代码: a= Abc b= a XYZ rint(b 最后一行打印出变量b的内容到底是'ABC'呢还是'XYz'?如果从数学意义上理解,就会错误地得出b和a相同,也应该 是'XYZ',但实际上b的值是'ABC',让我们一行一行地执行代码,就可以看到到底发生了什么事: 执行a='ABC',解释器创建了字符串'ABC和变量a,并把a指向'ABC ABC 执行b=a,解释器创建了变量b,并把b指向a指向的宁符串'ABC str ABC 执行a=‘XYZ',解释器创建了字符串'XYz',并把a的指向改为XYz',但b并没有更改: str " xYZ 所以,最后打印变量b的结果自然是'ABC'了。 常量 所谓常量就是不能变的变量,比如常用的数学常数π就是一个常量。在 Python中,j常用全部大写的变量名表示常量: P=3.14159265359 但事实上PI仍然是一个变量, Python根本没有任何机制保证P不会被改变,所以,用全部大写的变量名表示常量只是 一个习惯上的用法,如果你一定要改变变量卩I的值,也没人能拦住你。 最后解释一下整数的除法为什么也是精确的。在 Python中,有两种除法,一种除法是/ >>>18/3 3.3333333333333335 /除法计算结果是浮点数,即使是两个整数恰好整除,结果也是浮点数: >>9/3 还有一种除法是〃/,称为地板除,两个整数的除法仍然是整数: >>>16//3 3 你没冇看错,整数的地板除//永远是整数,即使除不尽。要做精确的除法,使用/就可以。因为//除法只取结果的整数部 分,所以 Python还提供一个余数运算,可以得到两个整数相除的余数: >>>19‰3 12字符串和编码 字符编码 我们己经讲过了,字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题。 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比 特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111=+进制255),如果要 表示更大的整数,就必须用更多的字节。比如两个字节可以表示的最大整数是65535,4个字节可以表示的最大整数是 4294967295。 由丁计算杋是美国人发明的,因此,最早以有127个字母被编码到计算机里,也就是大小写英文字母、数字和一些符号, 这个编码表被称为 ASCII编码,比如大写字母A的编码是65,小写字母z的编码是122 但是要处理屮文显然一个了节是不够的,至少需要两个字节,而且还不能和ASCI编码冲突,所以,屮国制定了GB2312 编码,用来把中文编进去。 你可以想得到的是,全世界有上百种语言,日本把日文编到 Shift]IS里,韩国把鲇文编到Euc-kr里,各国有各国的 标准,就会不可避免地出现冲突,结果就是,在多语言混合的文本中,显示出来会有乱码。 字符编码的问题真是令人头疼! 因此, Unicode应运而生。 Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了 Unicode标准也在不断发展,但最常用的是用两个字节表示一个字符(如果要用到非常偏僻的字符,就需要4个字节 现代操作系统和大多数编程语言都直接文持 Unicode 现在,捋一捋 ASCII编码和υ nicole编码的区别: ASCII编码是1个字节,而 Unicode编码通常是2个字节 字母A用 ASCII编码是十进制的65,二进制的9188901 字符8用 ASCII编码是十进制的48,二进制的88118808,注意字符"8·和整数是不同的 汉字中已绎超出了 ASCII编码的范围,用 Unicode编码是十进制的28013,二进制的188111868181181。 你可以猜测,如果扣 ASCII编码的A用 Unicode编码,只需要在前面补就叮以,因此,A的 Unicode编码是80088 198991。 新的问题又出现了:如果统一成 Unicode编码,乱码问题从此消失了。但是,如果你写的文本基本上全部是英文的话, 用 Unicode编码比 ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算。 所以,本着节约的精神,又岀现了把υ ncode编码转化为可变长编码”的υIF-8编码。UTF-8编码把一个 Unicode宁 符根据不同的数字大小编码成1-6个字节,常用的英文字母祓编码成1个字节,汉字迸常是3个字节,只有很生僻的字符 才会被编凸成4-6个字节。如朱你要传输的文本包含大量英文宇符,用UTF-8编码就能节省空间: 字符ASC Unicode UTF-8 01000001 0000000001000001 01000001 中 0100111000101101 111001001011100010101101 8 从上面的表格还可以发现,昕IF-8编码有一个额外的好处,就是 ASCII编码实际上可以被看成是UTF-8编码的一部分, 所以,大量只支持 ASCII编码的历史遗留软件可以在UTF-8编码卜继续工作 搞清楚∫ ASCII、 Unicode和UTF-8的关系,我们就可以总结一下现在计算机系统通用的宇符编码工作方式: 在计算机内存中,统一使用υ nicole编码,当需要保存到硬盔或者需要传输的时侯,就转换为UTF-8编码 用记事本编辑的时候,从文件读取的υIF-8宁符被转換为υ nicole宁符到內存里,编辑完成后,保存的时候再把 Unicodeε 转换为UTF-8保存到文件 记事本 e编码 保存:转换为 转换为 UTF-8 文件:abc UTF8编码 浏览网页的时候,服务器会把动态生成的 Unicode内容转换为UTF-8再传输到浏览器: 服务器 Unicode编码 输出UTF8网页 浏览器 所以你看到很多网页的溟杩上会有类似< meta charset="UTF-8"/的信息、,表小该网页正是用的UTF-8编码。 Python的字符串 搞清楚了令人头疼的字符编码问题后,我们再来研究 Python的字符串。 在最新的 Python3版本中,字符串是以 Unicode编码的,也就是说, Python的字符串女持多语言,例如 >> print("包含中文的str') 包含中文的str 对于单个字符的编码, Python提供了ord()函数获取字符的整数表小,chr()函数把编码转换为对应的字符: d("A') 65 >>ord("中 291 >>>chr(66) >>chr(25991 文 如果知道字符的整数编码,还可以用十六进制这么写str >>>'\u4e2d\u6587 中文 两和写法完仝是等价的。 由于 Python的字符串类型是str,在内存中以 Unicode表示,一个字符对应若干个字节。如果要在网络上传输,或者 保存到磁盘上,就需要把str变为以字节为单位的 bytes Python对 bytes类型的数据用带b前缀的单引号或双引号表示 x = b ABC 要注意区分ABC'和b'ABC',前者是str,后者虽然内容显示得和前者一样,但 bytes的每个字符都只占用一个字节 以 Unicode表示的str通过 encode()方法可以编码为指定的 bytes,例如: >>>ABC.encode (ascii) b'ABC >》'中文'. encode(utf8') b'xe4\b8\xad\xe6\x96\X87 >>>中文'. encode("asCi") Traceback (most recent call last): File <stdin>",line 1, in <module> Unicode Encodeerror: 'ascii codec cant encode characters in position 0-1: ordinal not in range (128) 纯英文的str可以用AsCI编码为byte5,内容是一样的,含有中文的str可以用UTF-8编码为 bytes。含有中文的 str无法用ASCI编码,因为中文编码的范围超过了 ASCII编码的范围, Python会报错。 在 bytes屮,无法显示为 ASCII字符的字节,用\x#显示。 反过米,如果我们从网络戌磁盘上读取了字节流,那么读到的数据就是 bytes。要把 bytes变为str,就需要用 decode() 方 >>> b'ABC .decode ('ascii) >>>b\xe4 \xb8\Xad\Xe6\X96\87.decode ('utf-8) 屮文 要计算str包含多少个字符,可以用1en()函数 >>>len( abc) >>len(中文') len()函数计算的是str的字符数,如果换成 bytes,len()函数就计算字节数: >>>len(b AbC) >>>len(b\xe4\Xb8\Xad\xe6\96\X87) >》len(中文, encode('utf-8') 可见,1个中文字符经过UTF-8编码后通常会占用3个字节,而1个英文字符只占用1个字节。 在操作宇符串时,我们经常遇到str和 bytes的互相转換。为了避兔乱码问题,应当始终坚持使用UTF-8绽码对sr和 bytes进行转换。 由于 Python源代码也是一个文本文件,所以,当你的源代码屮包含屮文的时候,在保存源代码时,就需要务必指定保存 为UF-8编码ε当 Pythoη解释器读取源代码时,为了让亡按UTF-8编码读取,我们通常在文件开头写上这两行 #!/usr/bin/env python 3 #-* coding: utf-8-* 第一行注释是为了告诉 Linux/SX系统,这是一个 Python可执行程序, Windows系统会忽略这个注释; 第二行注释是为了告诉 Python解释器,按照UTF-8编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码。 申明了UTF-8编码并不意味着你的py文件就是UTF-8编码的,必须并且要确保文本编辑器正在使用UTF-8 without BOM编码 10

...展开详情
试读 208P 廖雪峰python教程打印版(完整版)(.pdf)
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
u010243500 讲的比较清楚,适合初学者
2018-12-04
回复
huahongcha 从头看到尾没有找到这是python3还是python2
2018-09-06
回复
ibmfashion 编程编程不错。
2018-07-27
回复
ebo288 感谢整理,pdf放在本地更方便一些
2018-06-23
回复
ohmytime 不错不错, 省去了每次去网站看了.
2018-05-01
回复
_勇 很好,学习python
2018-04-28
回复
kristpan 感谢整理,pdf放在本地更方便一些
2018-04-21
回复
skendy 灰常感谢,入门好帮手
2018-04-12
回复
zhaorui56 不错 不过感觉没有3.0的介绍和较新的 机器学习方面的介绍
2018-01-02
回复
hongshao18 非常好 感谢廖老师 感谢分享
2017-12-22
回复
关注 私信 TA的资源
上传资源赚积分,得勋章
最新推荐
廖雪峰python教程打印版(完整版)(.pdf) 48积分/C币 立即下载
1/208
廖雪峰python教程打印版(完整版)(.pdf)第1页
廖雪峰python教程打印版(完整版)(.pdf)第2页
廖雪峰python教程打印版(完整版)(.pdf)第3页
廖雪峰python教程打印版(完整版)(.pdf)第4页
廖雪峰python教程打印版(完整版)(.pdf)第5页
廖雪峰python教程打印版(完整版)(.pdf)第6页
廖雪峰python教程打印版(完整版)(.pdf)第7页
廖雪峰python教程打印版(完整版)(.pdf)第8页
廖雪峰python教程打印版(完整版)(.pdf)第9页
廖雪峰python教程打印版(完整版)(.pdf)第10页
廖雪峰python教程打印版(完整版)(.pdf)第11页
廖雪峰python教程打印版(完整版)(.pdf)第12页
廖雪峰python教程打印版(完整版)(.pdf)第13页
廖雪峰python教程打印版(完整版)(.pdf)第14页
廖雪峰python教程打印版(完整版)(.pdf)第15页
廖雪峰python教程打印版(完整版)(.pdf)第16页
廖雪峰python教程打印版(完整版)(.pdf)第17页
廖雪峰python教程打印版(完整版)(.pdf)第18页
廖雪峰python教程打印版(完整版)(.pdf)第19页
廖雪峰python教程打印版(完整版)(.pdf)第20页

试读结束, 可继续阅读

48积分/C币 立即下载 >