收藏 分享(赏)

菜鸟的Python笔记.pdf

上传人:HR专家 文档编号:6213158 上传时间:2019-04-02 格式:PDF 页数:47 大小:417.44KB
下载 相关 举报
菜鸟的Python笔记.pdf_第1页
第1页 / 共47页
菜鸟的Python笔记.pdf_第2页
第2页 / 共47页
菜鸟的Python笔记.pdf_第3页
第3页 / 共47页
菜鸟的Python笔记.pdf_第4页
第4页 / 共47页
菜鸟的Python笔记.pdf_第5页
第5页 / 共47页
点击查看更多>>
资源描述

1、菜鸟的 Pyt hon 笔记目录 一、 热身 二、 开始 编程 三、 类型 与操作 四、 数字 五、 字符串 六、 列表 七、 字典和元 组 八、 文件 九、 基本语句 十、 i f 和 w h i le 控制 语句 十一 、 f o r 循环 控制语句 十二 、函数 十三 、函数高 级话题 十四 、列表推 导式 ( L i st c o m pr ehe ns ion ) 十五 、模块 十六 、异常处 理一、 热身为什 么选 择 Py t hon软件质量:可读性、可复用性以及可维护性。生产力:代码量相对小。可移植性:可以跨越 Wi ndows 和 Li nux。组建集成: P y t hon

2、可以和 C 或者 C + +等语言结合使用。Py t hon 的能 力范 围P y t hon能做什么呢?系统编程, GUI ,网络编程以及数据库编程等等。Py t hon 的运 行方 式P y t hon程序在运行之前要先从源程序被编译成字节码 , 这样可以加快程序的运行速度。字节码由 P y t hon虚拟机执行( P VM) 。除了标准的 C P y t hon之外 , 还有 J a v a 上的 P y t hon实现 J ython, 以及使 得P y t hon可以和 .NET 互通的 I r onPython。除此之外,有专门的 P y t hon优化程序可以提高代码的效率,以及

3、讲 P y t hon制作成二进制可执行文件的程序。安装 Py t hon到 htt p:/ / www.pyt hon.org/下载最新的稳定版本 P y t hon。在 Wi ndows 平台下 ,安装过程和普通的软件没有什么区别,一路下一步就可以了。安装成功之后,开始菜单里应该多出如下一项:P y t hon是根据一个英国喜剧 Monty Py t hon命名的。二、 开始编程命令 行方 式在 P y t hon项目下有一个 I DL E 程序,打开它之后会出现 P y t hon的命令行窗口,可以以交互的形式执行程序。例如输入:pri nt h e l l o c a i nia o!

4、第一个程序就这么诞生了!如下如:分别输入如下命令,可以简单地熟悉一下命令行环境:2*2是 42*10是 10242*100是语法错误 不能随便空格:pri nt 100#在语句前面输入空格是语法错误 ! !注释格式:pri nt 100#注释是这个样子的。将程 序存 储在文 件里. p y 文件将 P y t hon语句保存到后缀为 .py的文件里即可。之后在 c m d 下执行pat h/t o/f i l e .py就可以运行程序了。重定 向在 c m d 下执行:pat h/t o/f i l e .py s a ve.t xt将会把 f i l e .py的输出存储在 s a ve 文

5、本文件里。解决 双击执 行 P y t h o n 程序 后 c md 窗口 消失在 Wi ndows 下,直接双击 .py文件执行程序,通常会闪过一个黑窗口,无法观察到任何输出。可以在程序的最后添加一句:r a w_input( )可以避免窗口消失。Li n u x 可执 行脚本直接可以执行的脚本,关键是第一行的注释:#!/ usr / l o c a l / bin/pythonpri nt The Br i ght S i de of Li f e . # Another c om m e nt her e直接从书里抄下来的代码,第一行是指向 P y t hon解释器的路径。模块 ( P

6、yt hon modul e )引入 模块引入一个模块的语法:i mport m odule #wi t houts uff i x注意,是不需要添加 .py后缀的。重载 模块执行上面代码之后再次 i m port m odule 将不会有任何事情发生。需要:r e l oad(m odule )实例在 t op.py程序中调用另一个模块。t e s t .py内容如下:t e s t = “ t e s t i ng“t op.py内容如下:i m port t e s tpri nt t e s t .t e s t失败 , 对比书上也没找到毛病 , 最后随便敲了一下 t e s t 发现

7、原来 P y t hon内部有这么个模块,名字冲突了 汗,把文件名改成 m yTe s t 就没问题了。m yTe s t .py 内容如下:t e s t = “ t e s t i ng“t op.py内容如下:i m port m yTe s tpri nt m yTe s t .t e s t这里, t e s t 叫做 m yTe s t 模块的属性。再次强调: i m port 对同一个模块来说,一个进程值可以 i m port 一次。f r o mf r om m yTe s t i m port t e s t使用 f r om 调用模块的时候 , 再使用 t e s t 的时

8、候 , 可以不用点来访问了 , 直 接t e s t就好。d i r无论使用 i m port 还是 f r om , 所有属性都会被引入 。 使用 dir 可以查看已经引入模块的所有属性。pri nt dir ( m yTe s t )结果: _buil t i ns_, _doc_, _fi l e _, _na m e _, _pac kage_, t e s t 其中有前后双下划线的东西是 P y t hon内置的 , 不用管 。 模块维护自己的命名空间e x e c f i l ee xec f i l e ( m o dule .py)另外一种运行文件的方式 , 可以在一个进程中多

9、次运行文件 , 但是小心覆盖正在使用的变量。与其它语言的互通,书上把这个叫做 Em b e dding C a l l s 。书上举了一个 C 调用 P y t hon的简单示例:#incl ude.P y _Init i a l i z e ( ) ;P y R un_Si m p l e S t r i ng(“ x = bra ve + s i r + r obin“) ;三、 类型与操作基本 变量 类型Nu m b e r ,数字: 8。S t r i ng,字符串: t e s t Li s t ,列表: 1,2,4,5Di c t i onar i e s ,字典: f ood:

10、s pam , t a s t e : y um Tuple ,元组: ( 1,s pam , 4, U )F i l e 文件: m yfi l e = open ( e ggs , r )其它类型: S e t s , t ypes , None , Boole a ns数字 简介pri nt 3.14* 2#m a t hi m port m a t hpri nt m a t h.pi#ra ndomi m port r a ndompri nt r a ndom.r a ndom( )pri nt r a ndom.r a ndom( )pri nt r a ndom.choic e

11、 ( 1,2,3,4)pri nt r a ndom.choic e ( 1,2,3,4)字符 串简 介#Ch i nes e#中文字符串s t r C N = 春暖花开 #输出字符串pri nt s t r C N#le n 函数,字符串的长度pri nt l e n ( s t r C N)#访问第一个字符pri nt s t r C N 1#访问最后一个字符pri nt s t r C N - 1#Engli s h#英文字符串s t r EN = s pri ng c om e s a nd t he f l owe r i s open.pri nt s t r ENpri nt l

12、 e n(s t r E N)pri nt s t r EN 0pri nt s t r EN - 1#从 0到 5但是不包括 5。pri nt s t r EN 0:5#fr om 0 t o 4pri nt s t r EN 0:- 1#简略写法:分别表示到字符串结尾,和从字符串开头。pri nt s t r EN 0:pri nt s t r EN : - 1#字符串可以进行 +链接和乘法运算pri nt s t r C N + s t r E Npri nt s t r C N * 2#St r i ng m e t hods#字符串方法,注意: 所有的方法都不会改变字符串的值 。#需

13、要再赋值给另一个新建字符串来保存修改后的值。pri nt s t r EN.f i nd( f l o we r )pri nt s t r EN.r e pla c e ( f l o we r , _ )pri nt s t r EN.spli t ( )pri nt s t r EN.upper ( )pri nt s t r EN.i s a l pha( )pri nt s t r EN.r s t r i p ( )#to get h e l p#取得帮助pri nt di r ( s t r E N)he l p ( s t r )#m ult i l i ne#多行字符串pri

14、 nt “ “ “ HT ML C odeg oes h e r e .“ “ “#pat t e r n m a t c hing#模式匹配i m port r er e s ult = r e . matc h ( ( w+ ) ,st r E N)pri nt r e s ult . group ( 1)列表 Li s t 简介#li s t#新建列表t e s t Li s t = 10086,中国移动 , 1,2,4,5#访问列表长度pri nt l e n(t e s t Li s t )#到列表结尾pri nt t e s t Li s t 1:#向列表添加元素t e s t L

15、i s t .append( i m n e w her e ! )pri nt l e n(t e s t Li s t )pri nt t e s t Li s t - 1#弹出列表的最后一个元素pri nt t e s t Li s t .pop(1)pri nt l e n(t e s t Li s t )pri nt t e s t Li s t#li s t c om pre hensi o n#后面有介绍,暂时掠过m a t r i x = 1, 2, 3, 4, 5, 6, 7, 8, 9pri nt m a t r i xpri nt m a t r i x1c ol2 =

16、r ow 1 f or r ow i n m a t r i x#get a c olum n f r om a m a t r i xpri nt c ol2c ol2even = r ow 1 f or r ow i n m a t r i x i f r ow 1 % 2 = = 0#fi l t e r oddi t e mpri nt c ol2even字典 简介 :#新建一个字典t e s t Di c t = t i m e : 时间 , m a c hine : 机器 , t i m e m a c hine : 时间机器 pri nt t e s t Di c t t i m

17、 e #doi t i n a nother wa y#另一种构造字典的方式newDi c t = newDi c t s t u f f = s t a r t pri nt newDi c t#a per s on i n P y t honf r om t he book#字典的属性可以是字典r e c = nam e : f i r s t : B ob , l ast : S mi t h , j ob: dev , m gr , a g e : 40.5pri nt r e cr e c = 0 #me m ory f r e e d when t he l a s t r e f

18、 e r e nce i s gone#sort a dic t i o nar y#字典排序D = a : 1, b : 2, c : 3pri nt Df or i i n s ort e d( D) :pri nt ipri nt D i # opti m a z i t i on: l i s t c om pre hensi on r u ns f a s t e r# 优化: l i s t c om pre hensi o n 比 f or 循环要快一些s quar e s = x * 2 f or x i n 1, 2, 3, 4, 5pri nt s quar e s#fa

19、s t e r t hans quar e s = f or x i n 1, 2, 3, 4, 5:s quar e s .a ppend(x * 2)pri nt s quar e s#te s t i f a key e xis t i n a dic t i o nar y#查看某个字典中是否存在某个 key。i f n ot D.has _key( f ) :pri nt m i s s i ng元 组 Tupl es 简介和 l i s t 类似,但是具有不变性,像 n um ber 和 s t r i ng 一样:t e s t Tuple = ( 1,2,3,4)pri nt

20、l e n(t e s t Tuple )不变 性 I mmut a bi l i t y:注意 , 以上的操作之后字符串本身是不变的 , 而且也不能像这样修改一个字符串:s om e S t r 0 = t 上面介绍的 数字 、 字符串 和 元组 都具有不可变性 。 而 列表 和 字典 则是可以改变的。四、 数字简单 的运 算符除了之前简单介绍的运算之外,数字还有一个除完后约去小数的运算 “ / / ” :pri nt 50.0/3pri nt 50.0/ 3#fl o or divis i on此外,还有求余运算符 “ %” ,幂运算符 “ *” 。位操作:左移 “ ” 、按位或 “ |

21、” 、按位与 “ b=2;pri nt a ;赋值 语句#norm a l#普通赋值a = 1b = 2pri nt a ,b#tuple a s s i gnme nt#元组赋值a ,b = a , bpri nt a ,b#and l i s t#列表赋值 a ,b= 1,2pri nt a ,b#and t his i s c a l l e d s e quence a s s i gnme nt顺序赋值:下例分别存储一个字幕a ,b,c,d = HT ML pri nt a ,b,c,d#m ult i ple t a r get#多目标赋值a = b=c = d= 菜 pri nt

22、 a ,b,c,d使用 元组赋 值的实 例:L = 1, 2, 3, 4whil e L :f r ont, L = L 0, L 1:pri nt f r ont, L没有 + +在 P y t hon中有 + =之类的赋值,但是没有 + +和 - - 这类运算符。重定 向输 出流下面的例子将 P y t hon的输出流绑定到一个文件上。#changet he s t dout#修改 s t doutf r om s ys i m p ort s t doutt e m p = s t dout #for l a t e r useoutputF i l e = open ( out.t x

23、t , a )s t dout = out p u t Fi l es t dout.wr i t e ( j ust a t e s t )#回复输出流s t dout= t e m p #re s t ore t he output s t r e a mpr i n t out pu t Fi l e , c h anged f or a l i t t l e wh i e nf r om s ys i m p ort s t der rpri nt s t der r , e r r or! n十、 i f 和 whi l e 控制语句Py t hon 语句 的特 点与 C 语言对比

24、(也就是说与大多数语言对比 ) , P y t hon的语法结构有一些不同: 代码块是不需要使用大括号来括起来的。 i f , whil e 等等的条件是不需要使用小括号括起来的。 但是控制语句都需要添加一个冒号 “ : ” 。i f 语句在下面的 i f 语句中 , 代码块是按缩进的空格数量来判断的 。 也就是说空格数量一致的相邻行会被当作一个代码块 , 例如下面代码中红色表示的部分就是一个代码块,当 i f 的条件成立的时候它就会得到执行。#if e l i f e l s ex = 100i f x 50:pr i n t x i s hi gh, pr i n t and hi gh

25、up i n t h e s k y!e l i f x= 50:pri nt x i s m i ddle e l s e :pri nt x i s l ow逻辑 运算符#logic a nd,or, n oty=0i f x:pri nt x i s Tr uei f x a n d y:pri nt x a nd y a r e a l l Tr uee l s e :pri nt t her e s a bad g uy!三元 运算符在类 C 的编程语言中,有一个三元运算符可以代替简单的 i f 、 e l s e 逻辑。例如:A = X? Y : Z在 P y t hon中如下表示

26、:A = Y i f X e l s e Zwhi l e 语句同 C 语言一样, P y t hon的循环中也有 bre a k 和 c ont i nue。而且还添加了一个很方便的 e l s e 功能 , 当 whil e 的判断的条件不成立的时候 , 不执行循环体 , 而是执行 e l s e 中的代码块。x = 5whil e x:pri nt P y t hon*xx - = 1#if s om e t hing bad:# bre a k#if s om e t hing# c onti nuee l s e :#when t he whil e l oopdoes nt e x

27、 i t wi t h bre a kpri nt f i nis hed!十一、 f or 循环控制语句基本 的 f or 循环 语句用一 个列表 来确定 f o r 循环 的范围x = 1,2,3,4f or i i n x:pri nt ie l s e :pri nt f i nis hed!循环 一个字 符串#for i n s t r i ng ( a n d a l s o i n s t r i ng)x = P y t honf or i i n x:pri nt i元组 f o r 循环#tuple f or i nx = ( XHT ML , C S S ) ,( J a

28、 vaS c r i p t , P ython) f or ( a ,b) i n x:pri nt ( a ,b)迭代 器( i t er a t or )下面用一个例子程序来简单了解 P y t hon中的迭代器#fi l e i t e r a t or,bes t pra c t i c e t o r e a d a f i l e#and a l s o t he bes t l oopf orm#文件迭代器,读取文件的最佳实践f or l i ne i n open( t e s t .t xt ) :pri nt l i ne.upper ( )#dic t i o nar

29、y#字典迭代器t e s t Di c t = nam e : C h e n Zhe , gender : m a l e f or key i n t e s t Di c t :pri nt key + : + t e s t Di c t key#it e r a t or i n l i s t c om pre hensi on#li s t c om pre hensi o n 中的迭代器t e s t Li s t = l i ne f or l i ne i n open ( t e s t .t xt ) pri nt t e s t Li s t迭代 协议有一些函数可以在支持迭代协议的对象上运行。例如:#bas e d on i t e r a t i o n protocolt e s t Li s t = 9,8,7,6,5pri nt s ort e d ( t e s t L i s t ) #does nt c hange t e s t L i s t#求和pri nt s um( t e s t Li s t )

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 网络科技 > Python

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报