Python内部培训

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Python内部培训Python简介快速、高效的开发语言胶水语言生态链完善广泛用于科学计算、数据挖掘等领域本讲义约定使用Python2.x版本3.x版本由于库没有跟上,暂时不推荐使用语法特色动态语言特性—可在运行时改变对象本身(属性和方法等)基于C/C++和JAVA,但有很大区别缩进方式,建议使用空格,不要用TAB多个语句在一行使用;分隔注释符是#,多行使用docstring(’’’…’’’)变量无需类型定义可进行函数式编程FPPython3.x的变迁编程规范PEP8编码规范GooglePython编码规范GooglePythonPEP8编码规范开发环境PyCharm(支持PEP8语法规范、跨平台、远程调试、上传…)IPythonVIM–主要在linux下使用其它编辑器UE,notepad++,editplus…工欲善其,事必先利其器开发环境PyCharm调试Ctrl+Alt+S--属性配置Ctrl+Shift+Alt+L--格式化文件PPE8Ctrl+B--查看对象Ctrl+L--查找Ctrl+N--切换类Ctrl+Shift+N--切换文件Shift+F9/F10--Debug/Run单击行--设置断点工欲善其,事必先利其器PDB调试Python–mpdbxxx.pyb--设置断点(行,函数名)s--stepovern--nextc--continuer--runL--显示代码Exit()工欲善其,事必先利其器字符编码Python2.x默认的是OS的本地编码Python3.x是unicode内部编码.py文件第一行:#coding=utf-8,不指定编码时,文件中包含非ASCII字符会报错s1=中文1s2=u中文2printunicode(s1,'utf-8').encode('gbk')prints2.encode('gbk')printtype(unicode(s1,'utf-8')),type(s2),type(s2.encode('gbk'))Helloworld表达式2+33+(7*4)3**5‘Hello’+‘World’变量赋值a=43b=a*4.5c=(a+b)/2.5a=“HelloWorld”x,y=4+2,”python”pass语句–不做任何事时使用ifab:passelse:c=aNonePython特有的空值表示与C/C++中的NULL是不同的函数没有明确返回的话,默认返回是None不能与其它类型进行运算字符串stringstr[::],str[0],str[1:2],str[-1:]find/index()#没有找到子串,前者不会扔出异常replace(),split(),strip()“sub”in“str”#是否存在子串join()lst=[‘1’,’2’,’abc’,’4’,’5’]‘,’.join(lst)‘1,2,abc,4,5’列表list赋值a=[2,3,4]#Alistofintegerb=[2,7,3.5,“Hello”]c=[]d=[2,[a,b]]#嵌套列表e=a+b#Jointwolists操作x=a[1]#Get2ndelement(0isfirst)y=b[1:3]#Returnasub-listz=d[1][0][2]#Nestedlistsb[0]=42#Changeanelementprintsum(a)#=9x=a.pop(0)#pop第一个数据tuple赋值f=(2,3,4,5)#Atupleofintegersg=(,)#Anemptytupleh=(2,[3,4],(10,11,12))#Atuplecontainingmixedobjects操作x=f[1]#Elementaccess.x=3y=f[1:3]#Slices.y=(3,4)z=h[1][1]#Nesting.z=4特色与list类似,最大的不同tuple是一种只读且不可变更的数据结构不可取代tuple中的任意一个元素,因为它是只读不可变更的,也不能进行像list一样的加法操作字典dict赋值a={}#Anemptydictionaryb={’x’:3,’y’:4}#有点类似json格式c={’uid’:105,’login’:’beazley’,’name’:’DavidBeazley’}操作u=c[’uid’]#Getanelementc[’shell’]=/bin/sh#Setanelementdict2=dict2.update(dict1)#使用dict1中的数据去更新dict2ifc.has_key(directory):#Checkforpresenceofanmemberd=c[’directory’]else:d=Noned=c.get(“directory”,None)#带默认值的方式集合setset([“hello”,“world”,“of”,“words”,“of”,“world”])set(['world','hello','words','of'])如何删除重复数据Ls1=[1,3,5,3,7,4,5]Ls2=list(set(Ls1))可以使用&、|求两个set的交集、并集、补集、全集s1=set([1,2,3])s2=set([2,4])s1&s2#{2}s1|s2#{1,2,3,4}s1-s2#{1,3}s1^s2#{1,3,4}Helloworldif…elif…else语句:没有switch,有更高级的变通方式(dict字典方式)ifa==‘+’:b=‘+’elifa==‘-’:b=‘-’else:b=None布尔表达式–and,or,notifb=aandb=c:print‘boolisTrue’ifnot(baorcc):print‘notexpr,valueisTrue’循环While..else语句whileab:a=a+1else:print‘a=’,aFor语句(遍历序列的元素)foritemin[3,4,10,25]:printitemelse:print‘final’#PrintcharactersoneatatimeforcinHelloWorld:printc#Loopoverarangeofnumbersforiinxrange(0,100,2):printiforiinxrange(len(list1)):printlist1[i]死循环怎么办?桌面应用可以马上知道,并杀死对应进程服务器应用怎么去监控?计数器:在循环的最里面计数,超过指定数值就退出,缺点太多了让函数带有超时功能函数def语句deffunc1(a,b):#没有指针,函数内的数据只能通过返回‘’’funcspec’’’q=a/br=a-q*breturnr#调用方式a=func1(42,5)#a=2返回多个值deffunc2(a,b):q=a/br=a-q*breturnq,rx,y=func2(42,5)#x=8,y=2类classclass语句classAccount(object):#只在__init__中定义成员变量def__init__(self,initial):‘’’InitialClass‘’’self.balance=initial#析构def__del__(self)pass#字符串def__str__(self)desc=‘Account’returndesc使用定义好的classa=Account(1000.0)a.deposit(550.23)a.deposit(100)a.withdraw(50)printa.getBalance()模块程序可分成好几个模块:一个py文件就是一个模块;目录下面增加__init__.py也是#numbers.pydefdivide(a,b):q=a/br=a-q*breturnq,rdefgcd(x,y):g=ywhilex0:g=xx=y%xy=greturngimport语句importnumbersx,y=numbers.divide(42,5)n=numbers.gcd(7291823,5683)__import__()动态载入模块一个模块只载入一次实例会继承新加载的模块异常处理try语句try:f=open(“foo“,”r”)exceptIOError:printCouldn’topen’foo’.Sorry.“FinallyBaseException,e:logging.exception(e)raise语句deffactorial(n):ifn0:raiseValueError,Expectednon-negativenumberif(n=1):return1else:returnn*factorial(n-1)沒有处理的异常factorial(-1)Traceback(innermostlast):Filestdin,line1,in?Filestdin,line3,infactorialValueError:Expectednon-negativenumber文件操作open()函数f=open(foo,w)#Openafileforwritingg=open(bar,r)#Openafileforreading文件的读取/写入f.write(HelloWorld)buff=g.read()#Readalldataline=g.readline()#Readasinglelinelines=g.readlines()#Readdataasalistoflines异常处理try:f=open(“foo”,”w”)exception:XXX文件操作With语句Withopen(‘foo’)asfile:data=file.read()大文件—yield指针?引用?Python里面没有指针所有都是对象对象之间都是引用(引用计数方式)常用的对象都有cache默认是浅拷贝,深拷贝代码importcopyls1=[1,”test”,(3.4,7),{“key”:1,“comment”:”yourcomment”}]ls2=copy.deepcopy(ls1)正则表达式导入模块:importrep=re.compile(r'ab*',re.IGNORECASE)p=re.compile('[a-z]+')map/reduce云计算的核心算法Map是将一个大任务拆分为很多个小任务Reduce则将每个小任务的计算结果进行收集和汇总Filter过滤Python并行多线程Python并行多线程(map)Python并行多进程同步模式(apply_async)异步模式(apply)Python并行多进程(map)Map为异步模式单元测试unittest模块中的TestCase类代表测试用例性能优化Python的开发效率很高Python的执行效率很低,比C++和JAVA都慢循环/函数调用等很消耗资源数据结构的性能很高,目前可以认为是优化到极致优化方式:用timeit分析之后优化对应代码NUMPY与IO优化使用C模块来替换业务热点部分地方可以使用map来替代for…in…循环性能优化优化实例未优化版本:17.93秒CTYPE优化版本:0.29秒Numpy+IO优化版本:0.74秒Python程序基础框架Python程序基础框架主函数Python程序基础框架模块公共服务:PYTHONPATH__init__()做初使化测试全覆盖Python哲学优美胜过丑陋明确胜过含蓄简单胜过复杂复杂胜过难懂扁平胜过嵌套稀疏胜过密集

1 / 40
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功