Python新手必读12652.pdf
《Python新手必读12652.pdf》由会员分享,可在线阅读,更多相关《Python新手必读12652.pdf(89页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Python 新手必读(中国开源项目)Python 新手必读(中国开源项目)第一章 开始 为什么要选择 python?一个高层的总结 把 python 描述成一种面向对象的脚本语言可能是最合适的。它的设计混合了传统语言的软件工程的特点和脚本语言的易用性。它的主要特性有如下几个:1、它是面向对象的。它的类模式支持了诸如多态,操作符重载,多重继承等高级特性。2、它是自由的。它是开源的,像 Tcl 和 Perl 一样。3、它是可移植的。它是用 ANSI C 写成的。可以在今天所用的各种平台上编译、运行。4、它是功能强大的。python 丰富的工具集使它位于传统脚本语言(如 Tcl and perl)
2、和系统语言(如 C,C+,JAVA)之间。5、它是可混合的。python 程序可十分轻易地与其它语言写成的组件“粘合”在一起。如 python/c 集成 api,JPython。6、它是易于使用的。开发周期短,程序大小是其它语言的几分之一。7、它是简单易学的。实践中的 python 1、系统软件,python 对操作系统的内置接口,使它成为书写可移植程序,可维护的系统管理工具的理想工具。2、图形用户接口。它有一个叫 Tkinter 的 TK API 的标准的面向对象接口。3、组件集成。它可被 c/c+扩展和嵌入其它系统的能力。4、快速原型。5、Internet 脚本。6、数字编程。NumPy
3、数字扩展程序模块包含诸多数字编程工具。7、数据库编程。提供了与 sybase,oracle,odbc 等数据库接口。8、其它的图像处理,人工智能,分布式对象等。python 与类似工具的比较 1、比 Tcl 强大,可用于大型系统的开发。2、比 Perl 有更清晰的语法,更简单的设计,使它更可读,更容易理解。3、不要与 java 比较,python 只是一个脚本语言,而 java and c/c+是系统语言。如何运行 python 程序?1、交互式。交互命令行,在系统下打入 python,就进行交互命令模式,提示符是,按 Ctrl+D 退出。%python print hello,my frie
4、nd!;hello,my friend!2、运行模块文件。模块文件是包含 python 语句的简单文本文件。你可以用python xxx 来运行。用文本编辑器编写 example.py 的内容如下:import sys print sys.argv 接着就可以用以下命令运行。%python example.py 3、运行 unix 类型的脚本。就像 shell 脚本一样。#!/usr/local/bin/python print test.注释以#开头。存盘后,把它的属性改成可执行,就可以像 shell 脚本一样执行了。4、嵌入的代码和对象。在 c 程序中可调用 python 的运行时 API
5、。#include .py_Initialize();PyRun_SimpleString(x=brave+sir+robin);初览模块文件 以.py 为结尾的模块文件能导入或重载。例子:myfile.py 模块内容为 title=the example test 现在这个模块可能被其它程序导入,而且能访问 title 变量。方法一:import myfile print myfile.title 方法二:from myfile import title print title 初览名称空间检测 另一个技巧是用内置函数 dir()跟踪程序交互运行时的名字。python 设置细节 重要的环境变
6、量 path 系统 shell 查找路径,用来发现 python。PYTHONPATH Python 模块查找路径,用于导入。PYTHONSTARTUP Python 交互式启动文件路径。TCL_LIBRARY,TK_LIBRARY GUI 扩展变量(Tkinter)第二章 类型与操作符 Python 程序结构 它可分为模块,语句和对象三部份,关系如下:1、程序是由模块组成。2、模块中包含语句。3、语句生成并处理对象。为什么要使用内置类型?1、内置对象使简单程序写起来更容量。2、python 提供对象并支持扩展程序。3、内置对象是扩展程序的组件。4、内置对象总比定制的数据结构类型更加有效。内置
7、对象预览 Number(数字)3.4,333,5+4j String(字符串)sleep,hello List(列表)1,34,this,33 Dictionary(字典)aaa:test,bbb:yyy Tuple(元组)(1,aa,4,cc)File(文件)text=open(a,r).read()数字 python 支持常见的数字类型,(整数,浮点数),常量和表达式。另外还提供更高级的数字类型支持。包括复数,无限精确整数,大量的数字工具库。正常整数(c 的长整型)1234,-11,0 长整数(无限大小)88888888L 浮点数(c 的双整型)2.33,3.14e-10,4E21i 复数
8、常量 3+4j,2.0+4.0j,3J 表达式操作符 x or y 逻辑或 lambda args:expression 匿名函数 x and y 逻辑与 not x 逻辑反,=,=,!=比较操作符 is,is not 身份测试 in,not in 序列成员关系测试 x|y 位或 x y 位异或 x&y 位与 xy 把 x 向左或向右移动 y 位 x+y,x-y 相加/合并,相减 x*y,x/y,x%y 乘/重复,除,余数/格式-x,+x,x 一元取反,一致,位取补 xi,xi:j,x.y,x(.)索引,分片,限定,函数调用(.),.,.,.元组,列表,字典,转化为字符串 混合操作符,表中越往
9、下的结合性越强 可用括号将表达式分组 在 混合类型的表达式上,python 先将操作对像转化为最复杂的操作类型,然后再运行同种类型的数字运算,如一个整数与一个浮点数相加,python 就会把 整数转化为浮点数,再把两个浮点数相加。python 的数字类型复杂程序如下:整数长整数浮点数x=1#0001 x x|2#位或:0011 3 x&1#位与:0001 注意:x 的值一直都是1,没有变化。python 提供了内置函数和内置模块用于数字处理。import math math.pi 3.14159265359 pow(2,4)#内置函数,不用导入。字符串 s1=空字符串 s2=spams 双引号
10、,单引号无需加反斜杠转义。block=.三引号块,字符串可跨过多行。s1+s2 合并 s2*3 重复 s2i 索引 s2i:j 分片 len(s2)长度 a%s parrot%dead 字符串格式 for x in s2 迭代 m in s2 成员关系 python 不允许你在+and*号表达式中混合数字和字符,如abc+9 会出错。索引和分片 因为字符串的定义是有序的字符集合,所以可以通过位置访问它们的内容。在 python,通过索引取得字符的位移。如同 C 一样,偏移以0开始,以比字符长度小1的值结尾。python 还可以通过负偏移从序列中取值。s=spam print s0,s1,s2,
11、s3#索引 s p a m print s1:3,s1:,s:-1#分片 pa pam spa 修改和格式化 在 python 中改变文本信息,只需用合并,分片这样的工具建立并赋值成一个新值即可。s=s+!spam!s=s:4+test spamtest this is%d%s word%(1,good)格式化字符串输出,类似于 C的 sprintf。重载了%操作符,原来的%操作符是取余。this is 1 good word 字符串格式代码%s 字符串%c 字符%d 十进制(整数)%i 整数%u 无符号整数%o 八进制整数%x 十六进制整数%X 十六进制整数大写%e 浮点数格式1%E 浮点数
12、格式2%f 浮点数格式3%g 浮点数格式4%G 浮点数格式5%文字%e%E%f%g%G%(1.1,2.2,3.3,4.4,5.5)1.100000e+000 2.200000E+000 3.300000 4.4 5.5 普通的字符串工具 python 提供 string 这个处理字符串的工具模块。它包括转换大小写,查找子串,将字符转化成数字等功能。import string s=test string.upper(s)TEST string.find(a,s)#返回索引的子串-1 string.atoi(1234)+1234#把字符转化为整数进行加减运算 2468 aa+99#用把整数转化为字
13、符进行组合。aa99 字符串常量变量 a=aab print a aab a=aab print a aab a=aab print a aab a=test test test print a test test test 字符串的反斜线字符 newline 忽略(继续)反斜杠 单引号 双引号 a 响铃 b 退格 e 退出 000 空 n 新行(换行符)v 垂直制表符 t 水平制表符 r 回车 f 进纸符 0XX 八进制值 XX xXX 十六进制值 XX other 任何其它的字符 列表 列表可包含任何种类的对象:数字、字符串甚至其它列表。在 python 中的列表的主要属性有:1、任意对象
14、的有序集合。2、通过偏移存取。和字符串一样,可分片,合并等操作。3、可变长度,异构,任意嵌套。4、属于序列可变的类别。可在原位上改变,支持删除,索引赋值和方法等。5、对象引用的数组。类似于 C 的指针的数组。列表是 C 的数组,引有就像 C的指针(地址)。常用列表常量和操作 L1=一个空的列表 L2=0,1,2,3 四项:索引为0到3 L3=a,b,c 嵌套的子列表 L2i,L3i,j 索引 L2i:j 分片 len(L2)计算列表长度 L1+L2 合并 L2*3 重复 for x in L2 迭代 3 in L2 成员关系 L2.append(4)方法:增长 L2.sort()排序 L2.i
15、ndex(1)查找 L2.reverse()反转.del L2k 缩小 L2i:j=同上 L2i=1 索引赋值 L2i:j=1,2,3 分片赋值 range(4),xrange(0,4)生成整数的列表/元组 例子:len(1,2,3)3 1,2,3+4,5,6 1,2,3,4,5,6 1,2*4 1,2,1,2,1,2,1,2 for x in 1,2,3:print x 1 2 3 索引和分片 L=aa,bb,cc print L2#索引 cc print L1:2#分片 bb 原位改变列表 L=aa,aa,cc L1=bb#索引赋值 print L aa,bb,cc L=aa,bb,cc
16、L2:3=CC#分片赋值,删除+插入 print L aa,bb,CC L.append(please)#append 方法调用,其它方法类似。print L aa,bb,CC,please 注意:append 和 sort 在原位改变了关联的列表对象,但是不返回列表,它们返回一个叫 None 的值。对象本身同时改变,所以无需重新赋值。字典 字典是无序的集合,和列表相对,因为列表是有序的集合。字典中的项是通过键来存取的,而不是通过偏移。(perl 中的散列?)字典的主要属性如下:1、通过键而不是偏移量来存取。2、无序的任意对象集合。3、可变长度、异构、任意嵌套。4、属于可变映射类型。对象将键映
17、射到值。5、对象引用表(散列表)。本质上说字典是作为散列表实现的。常见的字典对象常量和操作 d1=空的字典 d2=aa:2,bb:4 两项的字典 d3=aa:bb:1,cc:2 嵌套 d2aa,d3aacc 通过键索引 d2.has_key(aa)方法:成员关系测试 d2.keys()键的列表 d2.values()值的列表.len(d2)长度(所存储的项的数目)d2key=new 添加/改变 del d2key 删除 提示:1、字典不是序列,所以不能像在字符串和列表中那样直接通过一个 for 进行迭代,需调用字典的 keys 方法,返回一个键值列表。2、序列操作,像合并,分片无法操作。3、赋
18、值给新的索引将添加项。4、键没有必要总是字符串。元组(tuple)元组由简单的对象组构成。不能原位改变。写在一串圆括号中,与列表类似。1、任意对象的有序集合。2、通过偏移量存取。3、属于不可变序列类型。4、固定长度,异常,任意嵌套。可包含列表,字典其它元组。5、对象引用的数组。常见的元组常量和操作()空元组 t1=(0,)只有一项的元组,不是一个表达式。不要漏了逗号。t2=(0,1,2,3)四项的元组 t2=0,1,2,3 四项的元组,同上一行。t3=(aa,(bb,cc)嵌套的元组 t1i,t3ij 索引 t1i:j 分片 len(t1)计算长度 t1+t2 合并 t3*3 重复 for x
19、 in t1 迭代 3 in t2 成员关系 有了列表,为什么还要用元组?元组的不可变性可以提供某些整体性,你能肯定在一个程序中一个元组不会被另一个引用改变。一个来自实践的原则:列表可以用于想变动的有序集合,元组则处理其它事情。文件 文件对象方法和 C 标准库的函数是一一对应的。常见的文件操作 output=open(/temp/test,w)生成输出文件(写方式)input=open(data,r)生成输入文件(读方式)s=input.read()把整个文件读到一个字符串中 s=input.ead(N)读 N 个字节 s=input.readline()读下一行(越过行结束标志)L=inpu
20、t.readlines()读取整个文件到一个行字符串的列表中 output.write(S)把字符串 S 写入文件 output.writelnes(L)将列表 L 中所有的行字符串写到文件中 output.close()手工关闭 任何情况下,Python 程序中的文本采取字符串的形式,读取一个文件将返回字符串形式的文本,并且文本作为字符串传递给 write 方法。调用 close 方法将终止对处部文件的连接。实际的文件操作 file=open(test,w)#打开文件用以输入,如果文件不存则生成。file.write(hello world)#把hello world写入文件 file.cl
21、ose()#关闭文件句柄 read=open(test,r)#打开文件用以输出 read.readline()#读一行 hello world read.readline()#空字符串:到文件结尾 共有的对象属性 对象分类 数字 数字的 不可变 列表 序列的 可变 字符串 序列的 不可变 字典 映射的 可变 元组 序列的 不可变 文件 扩展程序 -共性 1、列表,字典和元组可以包含任何种类的对象。2、列表,字典和元组可以任意嵌套。3、列表,字典可以动态扩大和缩小。比较相等性和真值=测试值是否相等 is 测试对象的一致性 L1=1,2,33 L2=1,2,33 L1=L2 True L1 is
22、L2 False 真值表 aaa true false false false 1 true 0.0 false None false#None 是 python 中一个特列对象,总被认为是假的。python 的比较方法 1、数字通过关系值比较。2、字符串按字典顺序,字符到字符的比较 (abc L=1,2,3 M=1,L,3 print M 1,1,2,3,3 L1=0#也改变了 M,共享引用。print M 1,1,0,3,3 解决办法,通过拷贝避免共享对象。L=1,2,3 M=1,L:,3#嵌入的 L 拷贝 print M 1,1,2,3,3 L1=0#只改变 L,M 不改变。print
23、M 1,1,2,3,3 print L 1,0,3 同层深度的重复加 L=1,2,3 X=L*4 print X 1,2,3,1,2,3,1,2,3,1,2,3 Y=L*4 print Y 1,2,3,1,2,3,1,2,3,1,2,3 L1=0#改变 Y 但不改变 X print X 1,2,3,1,2,3,1,2,3,1,2,3 print Y 1,0,3,1,0,3,1,0,3,1,0,3 解决方法同上 L=1,2,3 Y=L:*4 print Y 1,2,3,1,2,3,1,2,3,1,2,3 L1=0 print L 1,0,3 print Y 1,2,3,1,2,3,1,2,3,1
24、,2,3 循环数据结构不能打印 L=1 L.append(L)#追加引用到同一个对象中,在1.5.1之前这是个循环,需按 ctl-c 中断。print L 1,.解决方法,不要这样做。这是一种无意义的操作。不可变类型在原位不可以被改变 T=(1,2,3)print T(1,2,3)T2=4 Traceback(most recent call last):File,line 1,in-toplevel-T2=4 TypeError:object doesnt support item assignment T=T:2+(4,)#用分片,合并等操作生成一个新的对象。print T(1,2,4)第
25、三章 基本语句 程序由模块组成,模块包含语句,语句生成并处理对象。赋值 1、赋值生成对象引用,而不是对象的拷贝,因此,与数据存储结构相比,python的变量更像 C 中的指针。2、名字在第一次赋值时即已生成,不用事先声明。3、名字在引用前必须赋值。4、隐式赋值:import,from,def,class,for 函数参数等。赋值语句形式 a=test 基本形式 a,b=1,2 元组赋值 a,b=test,goods 列表赋值 a=b=test 多目标赋值 a,b=b,a 交换值 变量名规则 1、与 C 类似,以下划线或字母开头,随之可以是任意位的字母,数字或下划线。2、大小写敏感。3、保留字限
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Python 新手 必读 12652
限制150内