




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Python 新手必读(中国开源项目)Python 新手必读(中国开源项目)第一章开始为什么要选择python?一个高层的总结把 python 描述成一种面向对象的脚本语言可能是最合适的。 它的设计混合了传统语言的软件工程的特点和脚本语言的易用性。 它的主要特性有如下几个:1、它是面向对象的。它的类模式支持了诸如多态,操作符重载,多重继承等高级特性。2、它是自由的。它是开源的,像Tcl 和 Perl 一样。3、它是可移植的。它是用ANSI C 写成的。可以在今天所用的各种平台上编译、运行。4、 它是功能强大的。 python 丰富的工具集使它位于传统脚本语言 (如 Tcl andperl )和
2、系统语言(如 C, C+,JAVA之间。5、 它是可混合的。 python 程序可十分轻易地与其它语言写成的组件“粘合”在一起。如 python/c 集成 api,JPython。6、它是易于使用的。开发周期短,程序大小是其它语言的几分之一。7、它是简单易学的。实践中的 python1、系统软件,python 对操作系统的内置接口,使它成为书写可移植程序,可维护的系统管理工具的理想工具。2、图形用户接口。它有一个叫Tkinter 的 TK API 的标准的面向对象接口。3、组件集成。它可被c/c+ 扩展和嵌入其它系统的能力。4、快速原型。5、 Internet 脚本。6、数字编程。NumP漱字
3、扩展程序模块包含诸多数字编程工具。7、数据库编程。提供了与sybase,oracle,odbc 等数据库接口。8、其它的图像处理,人工智能,分布式对象等。python 与类似工具的比较1、比 Tcl 强大,可用于大型系统的开发。2、比Perl 有更清晰的语法,更简单的设计,使它更可读,更容易理解。3、不要与java 比较, python 只是一个脚本语言,而 java and c/c+ 是系统 语言。如何运行 python 程序?1、交互式。交互命令行,在系统下打入 python ,就进行交互命令模式,提示符是>>>,按Ctrl+D 退出。% python >>&
4、gt;print "hello,my friend!"hello,my friend!2、运行模块文件。模块文件是包含python 语句的简单文本文件。你可以用python xxx 来运行。用文本编辑器编写 example.py 的内容如下:import sys print sys.argv接着就可以用以下命令运行。% python example.py3、运行unix 类型的脚本。就像shell 脚本一样。#! /usr/local/bin/pythonprint "test "注释以 #开头。存盘后,把它的属性改成可执行,就可以像shell 脚本一样
5、执行了。4、嵌入的代码和对象。在c 程序中可调用 python 的运行时 API。#include <python.h>.py_Initialize();PyRun_SimpleString("x=brave +sir +robin");初览模块文件以 .py 为结尾的模块文件能导入或重载。例子:myfile.py 模块内容为title = "the example test"现在这个模块可能被其它程序导入,而且能访问 title 变量。方法一:import myfileprint myfile.title方法二:from myfile im
6、port titleprint title初览名称空间检测另一个技巧是用内置函数dir() 跟踪程序交互运行时的名字。python 设置细节重要的环境变量path 系统 shell 查找路径,用来发现pythonPYTHONPATH Python 模块查找路径,用于导入。PYTHONSTARTUP Python 交互式启动文件路径。TCL_LIBRARY,TK_LIBRARY GU忙展变量(Tkinter)第二章类型与操作符Python 程序结构它可分为模块,语句和对象三部份,关系如下:1、程序是由模块组成。2、模块中包含语句。3、语句生成并处理对象。为什么要使用内置类型?1、内置对象使简单程
7、序写起来更容量。2、 python 提供对象并支持扩展程序。3、内置对象是扩展程序的组件。4、内置对象总比定制的数据结构类型更加有效。内置对象预览Number微字)3.4, 333, 5+4jString( 字符串 ) 'sleep','hello'List( 列表 )1,34,'this',33Dictionary( 字典 ) 'aaa':'test','bbb':'yyy'Tuple( 元组 )(1,'aa',4,'cc')File( 文件 ) t
8、ext = open('a','r').read()数字python 支持常见的数字类型, (整数,浮点数) ,常量和表达式。另外还提供更高级的数字类型支持。包括复数,无限精确整数,大量的数字工具库。正常整数( c 的长整型) 1234, -11 , 0长整数(无限大小) 88888888L浮点数( c 的双整型) 2.33, 3.14e-10 , 4E21i复数常量3+4j,2.0+4.0j,3J表达式操作符x or y逻辑或lambda args:expression 匿名函数x and y逻辑与not x逻辑反<,<=,>,>=,=
9、,<>,!= 比较操作符is,is not身份测试in,not in序列成员关系测试位或位异或x & y位与x<<y,x>>y把 x 向左或向右移动y 位x+y,x-y相加 / 合并,相减x*y,x/y,x%y乘/ 重复,除,余数/格式-x,+x,x一元取反,一致,位取补xi,xi:j,x.y,x(.) 索引,分片,限定,函数调用(.),.,.,、元组,列表,字典,转化为字符串混合操作符,表中越往下的结合性越强可用括号将表达式分组在 混合类型的表达式上, python 先将操作对像转化为最复杂的操作类型,然后再运行同种类型的数字运算,如一个整数与一个
10、浮点数相加, python 就会把 整数转化为浮点数,再把两个浮点数相加。 python 的数字类型复杂程序如下:整数 <长整数 <浮点数 <复数数字在实际中的应用位操作>>>x = 1 #0001>>>x << 2 # 左移两位01004>>>x | 2 # 位或:00113>>>x & 1 # 位与:0001注意:x的值一直都是1,没有变化。python提供了内置函数和内置模块用于数字处理。>>>import math >>math.pi3.14159
11、265359>>>pow(2,4) # 内置函数,不用导入。字符串s1 = ''空字符串s2 = "spam's"双引号,单引号无需加反斜杠转义。block = """."""三引号块,字符串可跨过多行。s1 + s2合并s2 * 3重复s2i索引s2i:j分片len(s2)长度"a %s parrot" % 'dead'字符串格式for x in s2迭代成员关系m' in s2python 不允许你在+ and * 号表达式中
12、混合数字和字符,如 'abc' + 9 会出错。索引和分片因为字符串的定义是有序的字符集合,所以可以通过位置访问它们的内容。在 python ,通过索引取得字符的位移。如同 C 一样,偏移以0开始,以比字符长度小 1的值结尾。 python 还可以通过负偏移从序列中取值。>>>s = 'spam'>>>print s0,s1,s2,s3 #索引s p a m>>>print s1:3,s1:,s:-1 #分片pa pam spa修改和格式化在 python 中改变文本信息, 只需用合并, 分片这样的工具建立并
13、赋值成一个新值即可。>>>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浮点数格式2%f浮点
14、数格式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
15、39;>>> string.find(a,'s') # 返回索引的子串-1>>> string.atoi("1234") +1234 #把字符转化为整数进行加减运算2468>>> 'aa'+'99' # 用、把整数转化为字符进行组合。 'aa99'字符串常量变量>>> a = "aa'b">>> print aaa'b>>> a = 'aa"b'
16、;>>> print aaa"b>>> a = 'aa'b'>>> print aaa'b>>> a = """testtesttest""">>> print atesttest test字符串的反斜线字符newline忽略(继续)反斜杠'单引号"双引号a响铃b退格e退出000空n新行(换行符)v垂直制表符t水平制表符r回车f进纸符0XX八进制值 XXxXX 十六进制值XXother任
17、何其它的字符列表列表可包含任何种类的对象: 数字、 字符串甚至其它列表。 在 python 中的列表的主要属性有:1、任意对象的有序集合。2、通过偏移存取。和字符串一样,可分片,合并等操作。3、可变长度,异构,任意嵌套。4、属于序列可变的类别。可在原位上改变,支持删除,索引赋值和方法等。5、对象引用的数组。类似于C 的指针的数组。列表是C 的数组,引有就像C的指针(地址) 。常用列表常量和操作一个空的列表L1 = L2 = 0,1,2,30到3L3 = 'a','b','c'L2i,L3i,jL2i:jlen(L2)L1 + L2L2 * 3fo
18、r x in L23 in L2L2.append(4)L2.sort()L2.index(1)L2.reverse()嵌套的子列表索引分片计算列表长度合并重复迭代成员关系方法:增长排序查找反转del L2k缩小同上索引赋值L2i:j = L2i =1L2i:j = 1,2,3分片赋值range(4),xrange(0,4) 生成整数的列表/ 元组例子:>>> len (1,2,3)3>>> 1,2,3+4,5,61, 2, 3, 4, 5, 6>>> 1,2*41, 2, 1, 2, 1, 2, 1, 2>>> for
19、x in 1,2,3:print x1索引和分片>>> L = 'aa','bb','cc'>>> print L2#cc>>> print L1:2 #'bb'索引分片原位改变列表>>> L = 'aa','aa','cc'>>> L1 = 'bb' #>>> print L索引赋值'aa', 'bb', 'cc'
20、;>>> L = 'aa','bb','cc'>>> L2:3 = 'CC' # 分片赋值,删除+插入>>> print L'aa', 'bb', 'CC'>>> L.append('please') #append 方法调用,其它方法类似。>>>print L'aa', 'bb', 'CC','please'注意:
21、 append 和 sort 在原位改变了关联的列表对象,但是不返回列表,它们返回一个叫None 的值。对象本身同时改变,所以无需重新赋值。字典字典是无序的集合,和列表相对,因为列表是有序的集合。字典中的项是通过键来存取的,而不是通过偏移。 ( perl 中的散列?)d2.values()值的列表空的字典两项的字典嵌套通过键索引方法:成员关系测试键的列表字典的主要属性如下:1、通过键而不是偏移量来存取。2、无序的任意对象集合。3、可变长度、异构、任意嵌套。4、属于可变映射类型。对象将键映射到值。5、对象引用表(散列表)。本质上说字典是作为散列表实现的。常见的字典对象常量和操作d1 = d2 =
22、 'aa':2,'bb':4d3 = 'aa':'bb':1,'cc':2d2'aa',d3'aa''cc'd2.has_key('aa')d2.keys()长度(所存储的项的数目)len(d2)d2key = new添加 / 改变del d2key删除提示:1、 字典不是序列, 所以不能像在字符串和列表中那样直接通过一个for 进行迭代,需调用字典的 keys 方法,返回一个键值列表。2、序列操作,像合并,分片无法操作。3、赋值给新的索引将添加项。4
23、、键没有必要总是字符串。元组 (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)计
24、算长度合并t1 + t2重复t3 * 3for x in t1迭代3 in t2成员关系有了列表,为什么还要用元组?元组的不可变性可以提供某些整体性,你能肯定在一个程序中一个元组不会被另一个引用改变。 一个来自实践的原则: 列表可以用于想变动的有序集合,元组则处理其它事情。文件文件对象方法和C标准库的函数是一一对应的。常见的文件操作output = open('/temp/test','w')生成输出文件(写方式)input = open('data','r') 生成输入文件(读方式)读 N 个字节s = input.read()
25、把整个文件读到一个字符串中s = input.ead(N)读下一行(越过行结束标志)s = input.readline()L = input.readlines()读取整个文件到一个行字符串的列表中output.write(S)把字符串 S 写入文件output.writelnes(L)将列表 L 中所有的行字符串写到文件中手工关闭output.close()任何情况下, Python 程序中的文本采取字符串的形式,读取一个文件将返回字符串形式的文本,并且文本作为字符串传递给write 方法。调用 close 方法将终止对处部文件的连接。实际的文件操作打开文件用以输入, 如果文件不存则生成。
26、>>>file = open('test','w') #>>>file.write('hello world') #把'hello world' 写入文件>>>file.close() #关闭文件句柄>>>read = open('test','r') # 打开文件用以输出>>>read.readline() # 读一行hello world>>>read.readline()空字符串:到文件
27、结尾II共有的对象属性对象分类数字数字的 不可变列表序列的 可变字符串 序列的 不可变字典 映射的 可变元组序列的 不可变文件扩展程序-共性1、列表,字典和元组可以包含任何种类的对象。2、列表,字典和元组可以任意嵌套。3、列表,字典可以动态扩大和缩小。比较相等性和真值=测试值是否相等is测试对象的一致性>>> L1 = 1,2,'33'>>> L2 = 1,2,'33'>>> L1 = L2True>>> L1 is L2False真值表"aaa" truemifalse
28、falsefalse1true0.0 falseNone false #None 是 python 中一个特列对象, 总被认为是假的。python 的比较方法1、数字通过关系值比较。2、字符串按字典顺序,字符到字符的比较("abc" < "ac") ,第二个位c比 b 大,所以为真。3、列表和元组通过对每个内容作比较,从左到右。4、字典通过比较排序后的(键,值)列表进行比较。python 中类型层次数字 - 整数 -整数,长整数|- 浮点数,复数集合 序列 可变 列表| 不可变的 字符串,元组|- 映射 字典可调用的 函数 类 方法 绑定 ( 通过
29、对象来访问方法)非绑定 ( 通过类名来访问方法,并专门传递一个对象引用 )其它 - 模块 - 实例 - 文件 - 空内部 - 类型 - 代码 - 框架 - 轨迹内置类型常见问题1、赋值生成引用,而不是拷贝。> >> L = 1,2,3> >> M = 1,L,3> >> print M1, 1, 2, 3, 3> >> L1 = 0# 也改变了 M 共享引用> >> print M 1, 1, 0, 3, 3解决办法,通过拷贝避免共享对象。> >> L = 1,2,3> >&
30、gt; M = 1,L:,3 # 嵌入的 L 拷贝> >> print M1, 1, 2, 3, 3> >> L1 = 0# 只改变L, M不改变。> >> print M1, 1, 2, 3, 3> >> print L1,0, 3同层深度的重复加> >> L = 1,2,3> >> X = L * 41, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3> >> Y = L * 4> >> print Y1, 2, 3, 1, 2,
31、3, 1, 2, 3, 1, 2, 3> >> L1 = 0# 改变 Y 但不改变 X> >> print X1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3> >> print Y1, 0, 3, 1, 0, 3, 1, 0, 3, 1, 0, 3解决方法同上> >> L = 1,2,3> >> Y = L: *4> >> print Y1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3>>> L1 = 0>>>
32、 print L 1, 0, 3> >> print Y1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3循环数据结构不能打印> >> L = 1> >> L.append(L) # 追加引用到同一个对象中,在1.5.1 之前这是个循环,需按 ctl-c 中断。> >> print L1, .解决方法,不要这样做。这是一种无意义的操作。不可变类型在原位不可以被改变>>> print T (1, 2, 3)> >> T2 = 4Traceback (most recent
33、 call last):File "<pyshell#74>", line 1, in -toplevel-T2 = 4TypeError: object doesn't support item assignment> >> T = T:2 + (4,) # 用分片,合并等操作生成一个新的对象。> >> print T(1, 2, 4)第三章基本语句程序由模块组成,模块包含语句,语句生成并处理对象。赋值1、 赋值生成对象引用, 而不是对象的拷贝, 因此, 与数据存储结构相比, python的变量更像C 中的指针。2、
34、名字在第一次赋值时即已生成,不用事先声明。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、保留字限制。表达式aa(bb,cc) 函数调用aa.read(
35、bb)方法调用aa交互式打印aa < bb and bb!=cc 复合表达式aa < bb < cc范围测试if 条件测试般格式为:if < 条件 1>:< 语句 1>elif < 条件 2>:< 语句 2>else:< 语句 3>在 python 中没有 switch and case 语句,多路分支可被一系列 if/elif ,或是通过检索字典,查找列表代替,字典和列表可在运行时生成,比逻辑上的硬性编码更有弹性。>>> choice = 'aa'>>> prin
36、t 'aa':12.33,'bb':343.3,'cc':44choice #一个基于字典的 'switch' 语句12.33python 的语法规则1、语句一条接一条执行,一直到你说不为止。2、块和语句边界自动控测。用首行缩进形式将语句分组。3、复合语句= 首行,“:”,缩进语句。4、空格和注释被忽略。5、语句太长可跨行写。真值测试1、真代表着任意非空的数或非空的对象。2、假代表不真,数0 ,空的对象或None。3、比较或判断相等返回1或 0(真或假)。4、 and 和 or 布尔操作返回一个真或假的操作数对象。while 循环
37、一般格式:while < 条件 >:< 语句 1> else:< 语句 2>例子:while 1:print 'type ctrl-c to stop me' #1 为真,所以无限循环地打印。遍历字符串:>>> x = 'test'>>> while x: # 只要 x 不为空就执行print x,x = x1: # 从x中取出第一个字符。test est st t循环计数>>> a=0;b=10>>> while a < b:print aa =
38、a+10 1 2 3 4 5 6 7 8 9break,continue,pass,else 循环break 和 continue 和 C类似。break跳出最近的包围它的循环continue跳到最近的循环的开头pass什么都不做,只是一个空的占位空语句。只是一一个空的占位空语句。else运行并且只有在循环正常退出的情况下运行。没有碰到 break包含 break and continue 的循环语句。while < 条件测试 >:< 语句 >if < 条件测试 >:break # 跳出循环,忽略else 。if < 条件测试 >:continu
39、e # 转到循环开头。else:< 语句 ># 如果没有遇上 breakfor 循环for < 目标 > in < 对象 >:# 该目标赋以对象的项< 语句>#重复循环体:使用目标else:< 语句>#如果没有遇上break当 python 运行 for 时, 它将序列对象中的项一个接一个赋值给目标, 并且为每一个执行一次循环体。 for 也支持一个可选的 else 块,和在 while 中完全一样,如果循环没有遇到 break ,它就会执行,也就是说序列中所有的项都被访问了。for < 目标 > in < 对象 &
40、gt;:< 语名 >if <条件测试>:break # 跳出循环,忽略else 。if <条件测试>:continue # 转到循环开头。else:< 语句 ># 如果没有遇上 breakrange 和计数循环range 函数可能成一个连接的整数列表,它可以在for 中作为索引使用。带一个参数时, range 生成一个从0开始到参数值(不包含参数)的列表。>>> range(10)0, 1, 2, 3, 4, 5, 6, 7, 8, 9带两个参数时, range 生成以第一个参数为下边界,第二个参数上边界的列表。>>> range (10,20)10, 11, 12, 13, 14, 15, 16, 17, 18, 19带三个参数时, range 生成以第一个参数为下边界,第二
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 个人土地无偿赠与合同范本
- 个人家政保洁合同范本
- 制定合同范本 作用
- fidic条件合同范本
- 买卖延期合同范本
- 医用机甲租赁合同范本
- 净水设备售卖合同范本
- 劳动合同范本药店
- 出租和谐公寓合同范本
- 修建垃圾台合同范本
- 2024年湖北省宏泰国有资本投资运营集团有限公司招聘笔试参考题库含答案解析
- 政企业务部门培训
- 2024年高考历史:全3册核心知识梳理和大事年表
- 创意改变生活智慧树知到期末考试答案2024年
- 苏教版三年级下册数学全册作业设计
- 4.《昆虫备忘录》 课件
- 非标设备方案
- 2024压缩空气储能电站可行性研究报告编制规程
- 教师如何进行跨学科教学
- 数学-山东省济宁市2023届高三第一次模拟考试
- 2016-2023年苏州信息职业技术学院高职单招(英语/数学/语文)笔试历年考点试题甄选合集含答案解析
评论
0/150
提交评论