PYTHON知识点汇总doc.docx
- 文档编号:11561773
- 上传时间:2023-06-01
- 格式:DOCX
- 页数:34
- 大小:84.99KB
PYTHON知识点汇总doc.docx
《PYTHON知识点汇总doc.docx》由会员分享,可在线阅读,更多相关《PYTHON知识点汇总doc.docx(34页珍藏版)》请在冰点文库上搜索。
PYTHON知识点汇总doc
print句子也能够跟上多个字符串,用逗号“,”离隔,就能够连成一串输出:
print'Thequickbrownfox','jumpsover','thelazydog'
在Python中,等号=是赋值句子,能够把恣意数据类型赋值给变量,同一个变量能够重复赋值,并且能够是不同类型的变量。
变量自身类型不固定
的言语称之为动态言语,与之对应的是静态言语。
静态言语在界说变量时有必要指定变量类型,假如赋值的时分类型不匹配,就会报错。
假如字符串自身包含'怎么办?
比方咱们要表明字符串I'mOK,这时,能够用""括起来表明。
相似的,假如字符串包含",咱们就能够用''括起来表
示:
假如字符串既包含'又包含"怎么办?
这个时分,就需求对字符串的某些特别字符进行“转义”,Python字符串用进行转义。
\n表示换行
\t表示一个制表符
\\表示\字符本身
假如一个字符串包含许多需求转义的字符,对每一个字符都进行转义会很费事。
为了防止这种状况,咱们能够在字符串前面加个前缀r,表明这是
一个raw字符串,里面的字符就不需要转义了。
如,r'\(~_~)/\(~_~)/'。
如果要表示多行字符串,可以用'''...'''表示
如果中文字符串在Python环境下遇到UnicodeDecodeError,这是因为.py文件保存的格式有问题。
可以在第一行添加注释#-*-coding:
utf-8-*-
printu'中文'
在Python中,布尔类型还能够与其他数据类型做and、or和not运算
直接用[]把list的所有元素都括起来,就是一个list对象。
通常,我们会把list赋值给一个变量,这样,就可以通过变量来引用list
索引从0开端,也便是说,榜首个元素的索引是0,第二个元素的索引是1,以此类推。
因此,要打印第一名同学的名字,用L[0]
添加list的append()方法或者insert()方法
定位删去L.pop()()
对list中的某一个索引赋值,就能够直接用新的元素替换掉本来的元素,list包含的元素个数坚持不变。
缩进请严厉依照Python的习气写法:
4个空格,不要运用Tab,更不要混合Tab和空格,不然很简单形成由于缩进引起的语法过错。
ifage>=18:
要防止嵌套结构的if...else...,咱们能够用if...多个elif...else...的结构,一次写完一切的规矩
奇数加和forainL:
sum+=a
x+=2
偶数不要ifx%2==0:
Continue
dict的榜首个特点是查找速度快,不管dict有10个元素仍是10万个元素,查找速度都相同。
而list的查找速度跟着元素增加而逐步下降。
d={}
d.get(x)可以取到d{}中key后面的value
个数len(s)
s=set([('Adam',95),('Lisa',85),('Bart',59)])
forname,scoreins:
printname,':
',score
s.remove():
s.add()
比较函数cmp(x,y)
假如想让一个函数能承受恣意个参数,咱们就能够界说一个可变参数:
deffn(*args):
printargs
可变参数的名字前面有个*号,我们可以传入0个、1个或多个参数给可变参数
r.append(L[i])向r添加
对这种常常取指定索引规模的操作,用循环十分繁琐,因而,Python供给了切片(Slice)操作符,能大大简化这种操作。
对应上面的问题,取前3个元素,用一行代码就能够完结切片:
>>>L[0:
3]
['Adam','Lisa','Bart']
只用一个:
,表明自始至终:
>>>L[:
]
切片操作还能够指定第三个参数:
>>>L[:
:
2]
['Adam','Bart']
第三个参数表示每N个取一个,上面的L[:
:
2]会每两个元素取出一个来,也就是隔一个取一个。
printL[4:
:
5][-10:
]先获得5的倍数,再取后10个
首字母大写deffirstCharUpper(s):
returns[:
1].upper()+s[1:
]
range(1,101)
方法是使用enumerate()函数:
>>>L=['Adam','Lisa','Bart','Paul']
>>>forindex,nameinenumerate(L):
...printindex,'-',name
...
0-Adam
1-Lisa
2-Bart
3-Paul
dict对象有一个values()方法,这个方法把dict转换成一个包含所有value的list,这样,我们迭代的就是dict的每一个value:
d={'Adam':
95,'Lisa':
85,'Bart':
59}
printd.values()
#[85,95,59]
forvind.(iter)values():
printv
#85
#95
#59
items()方法把dict对象转换成了包含tuple的list,我们对这个list进行迭代,可以同时获得key和value
d={'Adam':
95,'Lisa':
85,'Bart':
59,'Paul':
74}
n=0
sum=0.0
fork,vind.iteritems():
sum=sum+v
n+=1
printk,':
',v
print'average',':
',sum/n
[x*xforxinrange(1,11)]
变量能够指向函数f=abs
根号importmath
defadd(x,y,f):
returnf(x)+f(y)
printadd(25,9,math.sqrt)
map()是Python内置的高阶函数,它接收一个函数f和一个list,并通过把函数f依次作用在list的每个元素上,得到一个新的list并返回。
defformat_name(s):
returns[:
1].upper()+s[1:
].lower()
printmap(format_name,['adam','LISA','barT'])
reduce()函数也是Python内置的一个高阶函数。
reduce()函数接收的参数和map()类似,一个函数f,一个list,但行为和map()不同,reduce()传入的函数f必须接收两
个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值。
reduce()还可以接收第3个可选参数,作为计算的初始值。
如果把初始值设为100,计算:
reduce(f,[1,3,5,7,9],100)
成果将变为125,由于榜首轮核算是:
计算初始值和第一个元素:
f(100,1),结果为101。
filter()函数是Python内置的另一个有用的高阶函数,filter()函数接收一个函数f和一个list,这个函数f的作用是对每个元素进行判断,返回True或False,filter()根据判
断成果主动过滤掉不契合条件的元素,回来由契合条件元素组成的新list。
利用filter(),可以完成很多有用的功能,例如,删除None或者空字符串:
defis_not_empty(s):
returnsandlen(s.strip())>0
filter(is_not_empty,['test',None,'','str','','END'])
根为整数defis_sqr(x):
returnmath.sqrt(x)%1==0
升序defcmp_ignore_case(s1,s2):
ifs1.lower()>s2.lower():
return1
elifs1.lower() return-1 else: return0 printsorted(['bob','about','Zoo','Credit'],cmp_ignore_case) 像这种内层函数引证了外层函数的变量(参数也算变量),然后回来内层函数的状况,称为闭包(Closure)。 返回闭包不能引用循环变量,请改写count()函数,让它正确返回能计算1x1、2x2、3x3的函数。 defcount(): fs=[] foriinrange(1,4): deff(i): defg(): returni*i returng fs.append(f(i)) returnfs f1,f2,f3=count() printf1(),f2(),f3() 通过对比可以看出,匿名函数lambdax: x*x实际上就是: deff(x): returnx*x 关键字lambda表明匿名函数,冒号前面的x表明函数参数。 测验空字符 printfilter(lambdas: sandlen(s.strip())>0,['test',None,'','str','','END']) 装修器@new—fn defperformance(f): defprint_time(*args,**kw): print'call'+f.__name__+'()in'+time.strftime('%Y-%m-%d',time.localtime(time.time())) returnf(*args,**kw) returnprint_time 装修器有decorator的状况下,再打印函数名: deflog(f): defwrapper(*args,**kw): print'call...' returnf(*args,**kw) returnwrapper @log deff2(x): pass printf2.__name__ defperformance(unit): deffn(f): @functools.wraps(f) defwrapper(*args,**kw): t0=time.time() back=f(*args,**kw) t1=time.time() t=(t1-t0)ifunit=='s'else(t1-t0)*1000 print'call%s()in%s%s'%(f.__name__,t,unit) returnback returnwrapper returnfn int()函数还提供额外的base参数,默认值为10。 如果传入base参数,就可以做N进制的转换: >>>int('12345',base=8) 5349 >>>int('12345',16) 74565 假设要转换大量的二进制字符串,每次都传入int(x,base=2)非常麻烦,于是,我们想到,可以定义一个int2()的函数,默认把base=2传进去: defint2(x,base=2): returnint(x,base) functools.partial就是帮助我们创建一个偏函数的,不需要我们自己定义int2(),可以直接使用下面的代码创建一个新的函数int2: >>>importfunctools >>>int2=functools.partial(int,base=2) importfunctools sorted_ignore_case=functools.partial(sorted,cmp=lambdaa,b: cmp(a.lower(),b.lower())) printsorted_ignore_case(['bob','about','Zoo','Credit']) math.pow(2,0.5) frommathimportlog 运用ImportError过错,咱们常常在Python中动态导入模块: try: fromcStringIOimportStringIO exceptImportError: fromStringIOimportStringIO Python3.x现已改进了整数的除法运算,“/”除将得到浮点数,“//”除才仍是整数: >>>10/3 3.3333333333333335 >>>10//3 3 要在Python2.7中引进3.x的除法规矩,导入__future__的division: >>>from__future__importdivision >>>print10/3 3.3333333333333335 classA(object) pass a1=A() a2=A() 1.判别某个目标是否是类的实例 isinstance(a1,A) 2.判别两个目标是否是否完全一致(意思为: 判别两个变量引证的地址是否相同,假如相同,则两个变量实践引证为同一目标) 用is进行判别 a3=a1 printa1isa3 3.判别两个目标中的内容是否相同 用==进行判别 printa1==a2 依照关键词排序 L1=[p1,p2,p3] L2=sorted(L1,key=lambdax: x.name) 在定义Person类时,可以为Person类添加一个特殊的__init__()方法,当创建实例时,__init__()方法被自动调用,我们就能在此为每个实例都统一加上以下属性: classPerson(object): def__init__(self,name,gender,birth): self.name=name self.gender=gender self.birth=birth __init__()方法的第一个参数必须是self(也可以用别的名字,但建议使用习惯用法),后续参数则可以自由指定,和定义函数没有任何区别。 解释器内部会将**kw拆分成对应的dict. setattr()方法接受3个参数: setattr(对象,属性,属性的值) setattr(self,k,v)相当于self.k=v kw.iteritems()历遍字典kw的所有key和value,分别匹配k,v *args容纳任意变量的list *kwargs容纳任意key,value的dict classPerson(object): def__init__(self,name,gender,birth,**kw): self.name=name self.gender=gender self.birth=birth fork,vinkw.iteritems(): setattr(self,k,v) Python对属性权限的控制是通过属性名来实现的,如果一个属性由双下划线开头(__),该属性就无法被外部访问。 看例子: classPerson(object): def__init__(self,name): self.name=name self._title='Mr' self.__job='Student' classPerson(object): def__init__(self,name,score): self.name=name self.__score=score p=Person('Bob',59) printp.name try: printp.__score exceptAttributeError: print'attributeerror' classPerson(object): count=0 def__init__(self,name): self.name=name Person.count+=1 p1=Person('Bob') printPerson.count p2=Person('Alice') printPerson.count p3=Person('Tim') printPerson.count 假如现已界说了Person类,需求界说新的Student和Teacher类时,能够直接从Person类承继: classPerson(object): def__init__(self,name,gender): self.name=name self.gender=gender 界说Student类时,只需求把额定的特点加上,例如score: classStudent(Person): def__init__(self,name,gender,score): super(Student,self).__init__(name,gender) self.score=score 一定要用super(Student,self).__init__(name,gender)去初始化父类,否则,继承自Person的Student将没有name和gender。 函数super(Student,self)将返回当前类继承的父类,即Person,然后调用__init__()方法,注意self参数已在super()中传入,在__init__()中将隐式传递,不需要写出(也 不能写)。 多重承继的承继链就不是一棵树了,它像这样: classA(object): def__init__(self,a): print'initA...' self.a=a classB(A): def__init__(self,a): super(B,self).__init__(a) print'initB...' classC(A): def__init__(self,a): super(C,self).__init__(a) print'initC...' classD(B,C): def__init__(self,a): super(D,self).__init__(a) print'initD...' Python的网络服务器有TCPServer、UDPServer、UnixStreamServer、UnixDatagramServer,而服务器运转形式有多进程ForkingMixin和多线程ThreadingMixin两 种。 要创立多进程形式的TCPServer: classMyTCPServer(TCPServer,ForkingMixin) pass 要创立多线程形式的UDPServer: classMyUDPServer(UDPServer,ThreadingMixin): pass 多重classBStudent(Student,BasketballMixin): Pass ClassC(A,B) 返回属性: 对于实例变量,dir()返回所有实例属性,包括`__class__`这类有特殊意义的属性。 注意到方法`whoAmI`也是s的一个属性。 首先 可以用type()函数获取变量的类型,它返回一个Type对象。 dir()返回的属性是字符串列表,如果已知一个属性名称,要获取或者设置对象的属性, 就需要用getattr()和setattr()函数了 对int、str等内置数据类型排序时,Python的sorted()按照默认的比较函数cmp排序,但是,如果对一组Student类的实例排序时,就必须提供我们自己的特殊方 法__cmp__(): classStudent(object): def__init__(self,name,score): self.name=name self.score=score def__str__(self): return'(%s: %s)'%(self.name,self.score) __repr__=__str__ def__cmp__(self,s): ifself.name return-1 elifself.name>s.name: return1 else: return0 从低到高returncmp(self.name,s.name) 从高到底return-cmp(self.name,s.name) 如果一个类表现得像一个list,要获取有多少个元素,就得用len()函数。 a,b=b,a+b其实就是多个变量的赋值运算,先算=右边,再赋值给左边变量: 0)a=0,b=1 1)a=b=1,b=a+b=1 2)a=b=1,b=a+b=2 3)a=b=2,b=a+b=3 4)a=b=3,b=a+b=5 5)a=b=5,b=a+b=8 6)a=b=8,b=a+b=13 要表明有理数,能够用一个Rational类来表明: classRational(object): def__init__(self,p,q): self.p=p self.q=q 求最大公约数 defgcs(a,b,c=1): if0==a%2and0==b%2: returngcs(a/2,b/2,c*2); s=abs(a-b) m=min(a,b) ifs==m: returnm*c returngcs(s,m,c) 假如要把Rational转为int,应该运用: r=Rational(12,5) n=int(r) 要让int()函数正常工作,只需要实现特殊方法__int__(): classRational(object): def__init__(self,p,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PYTHON 知识点 汇总 doc
![提示](https://static.bingdoc.com/images/bang_tan.gif)