您好,欢迎访问三七文档
基本语法if/elif/elseinfor...inbreak/continuewhile/passisdeltry...except...finally/raise内建类型NoneTure/FalseList内建函数切片列表推导式元组setdict函数相关函数定义/参数默认值Lambda函数不定长参数*para,**para@装饰器生成器表达式yield常用函数evalexecexecfiledirhelplenprintraw_inputrangefiltermapreducezipreversed反向循环sorted排序enumerate返回索引位置和对应的值open/文件操作模块化导入模块包面向对象概要类继承多重继承操作符重载__str__/__unicode__比较操作__iter__类相关函数typegetattr/hasattr/delattrpropertyisinstance(object,classinfo)Py常用模块汇编zshelve对象持久模块发布补丁::fastUserDict简述1.阅读须知文中使用作为会命令行中的输出信息的前缀对于不清楚用用途的函数可以在解释器下面输入help(函数名)来获取相关信息另外,自带的文档和google也是不可少的2.基本语法2.1.if/elif/elsex=int(raw_input(Pleaseenteraninteger:))#获取行输入ifx0:print'正数'elifx==0:print'零'else:print'负数'此外C语言中类似xxx?xxx:xxx在Python中可以这样写number=8printgoodif8==numberelsebad#当满足if条件时返回good,否则返回badgood2.2.inin判断一个数是否在一个集合(如:元组,列表等)中if'yes'in('y','ye','yes'):print'ok'2.3.for...inpython中没有类似C中的for循环,而是使用for...in来对集合中的每一个元素进行操作a=['cat','door','example']forxina:printx如果要修改a的内容,请用a的副本循环(否则不安全),如:a=[cat,zsp007@gmail.com]forxina[:]:iflen(x)6:a.insert(0,x)a['zsp007@gmail.com','cat','zsp007@gmail.com']若需要得到循环的次数,参见函数range的用法2.4.break/continue这两个的用法和C中相同foriinrange(10):if2==i:continue#结束当前循环,进入下一步循环if6==i:break#跳出循环printi输出013452.5.while/passwhileTrue:pass#什么也不做2.6.is用来比较两个变量是否指向同一内存地址(也就是两个变量是否等价)而==是用来比较两个变量是否逻辑相等a=[1,2]b=[1,2]aisbFalsea==bTrue2.7.del用于删除元素a=[1,2,3,4,5,6]dela[0]a[2,3,4,5,6]dela[2:4]a[2,3,6]dela[:]a[]delaa#抛出异常NameError:name'a'isnotdefined2.8.try...except...finally/raisetry...except用于异常处理try:x=int(raw_input(请输入数字:))exceptValueError:#可以同时捕获多个异常,写法如except(RuntimeError,ValueError):#当输入非数字时print您输入不是数字except:#省略异常名,可以匹配所有异常,慎用passelse:#当没有异常时print'result=',resultfinally:#和Java中类似。一般用于释放资源,如文件,网络连接。print'finish'raise用于抛出异常,可以为自定义的异常类惯例是以Error结尾的类,同类的异常一般派生自同一个基类(如Exception)classMyError(Exception):def__init__(self,value):self.value=valuedef__str__(self):returnreper(self.value)基类异常可以匹配派生类异常try:raiseException(spam,egg)exceptException,inst:#inst为该异常类的实例,为可选项printtype(inst)#异常的类型printinst3.内建类型3.1.NoneNone表示该值不存在,比如没有定义返回值的函数就返回None3.2.Ture/False布尔类型,Ture等价于1,False等价于03.3.Listtest=[1,2,yes]3.3.1.内建函数append(x)追加到链尾extend(L)追加一个列表,等价于+=insert(i,x)在位置i插入xremove(x)删除第一个值为x的元素,如果不存在会抛出异常reverse()反转序列pop([i])返回并删除位置为i的元素,i默认为最后一个元素(i两边的[]表示i为可选的,实际不用输入)index(x)返回第一个值为x的元素,不存在则抛出异常count(x)返回x出现的次数sort()排序例子:test=[1,2,yes]test.append(1)#追加到链尾test[1,2,'yes',1]test.extend(['no','maybe'])#追加一个列表test[1,2,'yes',1,'no','maybe']test.insert(0,'never')#在位置0插入'never'test['never',1,2,'yes',1,'no','maybe']test.remove('no')#删除第一个值为no的元素,如果不存在会抛出异常test['never',1,2,'yes',1,'maybe']test.reverse()#反转序列test['maybe',1,'yes',2,1,'never']test.pop()#返回并删除位置为i的元素,i默认为最后一个元素'never'test['maybe',1,'yes',2,1]test.index('yes')#返回第一个值为'yes'的元素,不存在则抛出异常2test.count(1)#返回1出现的次数2test.sort()#排序test[1,1,2,'maybe','yes']3.3.2.切片从序列中抽取一部分test=['never',1,2,'yes',1,'no','maybe']test[0:3]#包括test[0],不包括test[3]['never',1,2]test[0:6:2]#包括test[0],不包括test[6],而且步长为2['never',2,1]test[:-1]#包括开始,不包括最后一个['never',1,2,'yes',1,'no']test[-3:]#抽取最后3个[1,'no','maybe']test[::-1]#倒序排列['maybe','no',1,'yes',2,1,'never']3.3.3.列表推导式可以直接通过for循环生成一个listfreshfruit=['banana','loganberry'][weapon.strip()forweaponinfreshfruit]['banana','loganberry']说明:strip()是去除字符串两端多于空格,该句是去除序列中的所有字串两端多余的空格vec=[2,4,6][3*xforxinvecifx3][12,18][(x,x**2)forxinvec]#循环变量要是一个sequence,而[x,x**2forxinvec]是错误的[(2,4),(4,16),(6,36)]vec2=[4,3,-9][x*yforxinvecforyinvec2][8,6,-18,16,12,-36,24,18,-54][vec[i]+vec2[i]foriinrange(len(vec))][6,7,-3][str(round(355/113.0,i))foriinrange(1,6)]#str()是转换类型为可以打印的字符#round(x,n)表示对x保留n位小数(四舍五入)['3.1','3.14','3.142','3.1416','3.14159']3.4.元组一旦初始化便不能更改的数据结构,速度比list快t=1234,5567,'hello'#t=(1234,5567,'hello')的简写x,y,z=t#拆分操作可以应用于所有sequencex1234u=t,(1,2,3)u((1234,5567,'hello'),(1,2,3))empty=()#空元组singleton='hi',#单个元素的元组,注意逗号通过元组可以很简单的进行数据交换.比如:a=1b=2a,b=b,a3.5.setset(集合):无序不重复的元素集basket=['apple','orange','apple','pear','apple','banana']fruit=set(basket)fruitset(['orange','pear','apple','banana'])'orange'infruitTruea=set('abracadabew')aset(['a','c','b','e','d','r','w'])b=set('wajgwaoihwb')bset(['a','b','g','i','h','j','o','w'])a-b#差set(['c','r','e','d'])a|b#并set(['a','c','b','e','d','g','i','h','j','o','r','w'])a&b#交set(['a','b','w'])a^b#(并-交)set(['c','e','d','g','i','h','j','o','r'])3.6.dict字典:关键字为不可变类型,如字符串,整数,只包含不可变对象的元组.列表等不可以作为关键字.如果列表中存在关键字对,可以用dict()直接构造字典.而这样的列表对通常是由列表推导式生成的.tel={'jack':4098,'sape':4139}tel['guido']=4127tel{'sape':4139,'jack':4098,'guido':4127}tel['jack']#如果jack不存在,会抛出KeyError4098a.get(zsp,5000)#如果zsp为tel的键则返回其值,否则返回5000deltel['sape']#删除键'sape'和其对应的值tel.keys()#复制一份键的副本,同理tel.items()为值的副本['jack','guido']jackintel#判断jack是否tel的键TruezspnotintelTruefork,vintel.iteritems():printk,v#同理tel.iterkeys()为键的迭代器,tel.itervalues()为值的迭代器jack4098guido4127tel.copy()#复制一份te
本文标题:python教程
链接地址:https://www.777doc.com/doc-2847584 .html