Python培训课件.ppt
《Python培训课件.ppt》由会员分享,可在线阅读,更多相关《Python培训课件.ppt(48页珍藏版)》请在咨信网上搜索。
Python培训Python基本语法与编程2目标l使用Pythonl.l.Python Python 基础篇基础篇 -Life Is Short You Need-Life Is Short You Need PythonPythonlPython简介Python是一种开源的、解析性的,面向对象的编程语言。lPython使用一种优雅的语法,可读性强lPython支持类和多层继承等的面向对象编程技术。lPython可运行在多种计算机平台和操作系统中,如unix,windows,MacOS,OS/2等等使用使用pythonpython安装安装python,python,请参阅请参阅:http:/www.python.org:http:/www.python.orgl运行python脚本:l交互式运行(在Windows平台下有GUI界面)l执行python脚本文件l在Linux/UNIX环境下运行程序。l在python头部加一行:#!/usr/local/bin/pythonlchmod+xmyfile.pyl./myfile.py(当然也可以直接以pythonmyfile方式执行)快速开始简单语句lprint“helloworld”l计算器l1+1l格式化字符串lprintThetotalis%0.2f%56.3598注释 和 模块l注释l#我是注释l“”“我的注释”“”l模块limportsyslsys.exit()Python的数据类型l变量的定义。在python中,变量的类型是由赋给它的数值定义的。lq=7#q其为数值型变量lq=“Seven”#q为字符串型变量l基本数据类型:字符串,整数,浮点数,虚数,布尔型。l集合类型:列表(List),元组(Tuple),字典(Dictionary或Hash)Python的数据类型l列表(List)List的定义。laList=23或者bList=1,2,3lList的使用。可以像c语言中数据一样引用list中的元素。lprintbList1lList常用操作:append,del,+,*,len(list)l0*5Python的数据类型:列表(方法)l列表对象支持的方法(演示)lappend(x)lcount(x):X在List中的个数lextend(L)lIndex(x)linsert(i,x)lpop(x)lremove(x)lreverse()lsort()Python的数据类型:元组(Tuple)lTuple的定义laTuple=(1,3,5)lprintaTuplel元组可以用方括号括起下标做索引l元组一旦创建就不能改变l列表大部分操作同样适用于元组Python的数据类型:字典(Hash)l字典是一个用大括号括起来的键值对,字典元素分为两部份,键(key)和值。l字典是python中唯一内置映射数据类型。通过指定的键从字典访问值。l字典的使用:la=a:aa,b:bblac=ccla.has_key(a)PythonPython的数据类型的数据类型:字典(常用方法字典(常用方法)l字典的常用方法(演示):lhas_key(x)lkeys()lvalues()litems()lclear()lcopy()lupdate(x)lget(x,y)Python 控制语句 iflPython支持三种不同的控制结构:if,for和while,不支持C语言中的switch语句。l(1)if语句的用法:ifEXPRESSION1:STATEMENT1elifEXPRESSION2:STATEMENT2else:STATEMENT3Python 控制语句 forlfor语句的用法:mylist=forstatementforwordinmylist:printwordelse:#最终执行printEndlistPython 控制语句 whilelwhile语句的用法:a=0whilea5:a=a+1printaelse:printasvalueisfivePython 循环中的控制语句lbreak:终止当前循环lcontinue:终止本次循环lpass:什么事都不错Python 函数l函数定义:deffunction_name(arg1,arg2,.):statementreturnvaluel函数名:l函数名必须以下划线或字母开头,可以包含任意字母、数字或下划线的组合。不能使用任何的标点符号;l函数名是区分大小写的。l函数名不能是保留字。Python 函数作用域lPython使用名称空间的概念存储对象,这个名称空间就是对象作用的区域,不同对象存在于不同的作用域。l不同对象的作用域规则:l每个模块都有自已的全局作用域。l函数定义的对象属局部作用域,只在函数内有效,不会影响全局作用域中的对象。l赋值对象属局部作用域,除非使用global关键字进行声明。lLGB规则l大多数名字引用在三个作用域中查找:先局部(Local),次之全局(Global),再次之内置(Build-in)。若仍然找不到这个变量名,则引发NameError异常.Python 函数参数l函数的参数分类:l默认参数:deffunction(ARG=VALUE)l元组参数:deffunction(*ARG)l字典参数:deffunction(*ARG)l一些规则:l默认值必须在非默认参数之后;l在单个函数定义中,只能使用一个tuple参数(*ARG)和一个字典参数(*ARG)。ltuple参数必须在连接参数和默认参数之后。l字典参数必须在最后定义。内置特殊函数lapply()函数apply(func,args,kwargs)l函数用于当函数参数已经存在于一个元组或字典中,间接地调用函数.args是一个包含将要提供给函数的按位置传递的参数的元组.如果省略了args,任何参数都不会被传递.kwargs是一个包含关键字参数的字典.foo(3,“x”,name=Dave,id=12345)apply(foo,(3,“x”),name:Dave,id:12345)llambda操作符lambdaargs:expressionlargs是一个用逗号分隔的参数,expressin是一个调用这些参数的表达式map(),zip(),reduce(),和filter()lt=map(func,s).即ti=func(si).l需要注意的是,func函数必须有且只有一个参数a=1,2,3,4,5,6b=map(lambdax:3*x,a)#b=3,6,9,12,15,18t2=map(func,s1,s2,sn)?t3=map(None,s1,s2,sn)?lzipls=zip(s1,s2,.,sn):ziplsi=(s1i,s2i,.,sni).zip()函数取决于最短序列.lreduce(func,s)函数从一个序列收集信息,然后只返回一个值(例如求和,最大值,等).b=reduce(sum,1,2,3,4,)#b=(1+2)+3)+4)=10lfilter(func,s)是个序列过虑器,使用func()函数来过滤s中的元素。c=filter(lambdax:x=0#d=5,2,7,8e=(x,y)forxina#e=(5,a),(5,b),(5,c),foryinb#(2,a),(2,b),(2,c),ifx0#(7,a),(7,b),(7,c),#(8,a),(8,b),(8,c)f=(1,2),(3,4),(5,6)g=math.sqrt(x*x+y*y)#g=2.23606,5.0,7.81024forx,yinfh=reduce(lambdax,y:x+y,#平方根的和math.sqrt(x*x+y*y)forx,yinf)eval(),exec,execfile(),eval(),exec,execfile(),和和compile()compile()leval(str,globals,locals)函数将字符串str当成有效Python表达式来求值,并返回计算结果。l同样地,exec语句将字符串str当成有效Python代码来执行.提供给exec的代码的名称空间和exec语句的名称空间相同.l最后,execfile(filename,globals,locals)函数可以用来执行一个文件,看下面的例子:eval(3+4)7execa=100a100execfile(rc:test.py)hello,world!eval(),exec,execfile()名字空间默认eval(),exec,execfile()所运行的代码都位于当前的名字空间中。eval(),exec,和execfile()函数也可接受一个或两个可选字典参数作为代码执行的全局名字空间和局部名字空间Demo:globals=x:7,y:10,birds:Parrot,Swallow,Albatrosslocals=#将上边的字典作为全局和局部名称空间a=eval(3*x+4*y,globals,locals)execforbinbirds:printbinglobals,locals注意语法execfile(foo.py,globals,locals)exec是一个语句(就象print或while),而eval()和execfile()则是内建函数.compile(str,filename,kind)compile(str,filename,kind)函数函数lcompile()将一个字符串编译为字节代码,str是将要被编译的字符串,filename是定义该字符串变量的文件,kind参数指定了代码被编译的类型lsingle指单个语句,lexec指多个语句,leval指一个表达式.返回一个代码对象,该对象也可以被传递给eval()函数和exec语句来执行l预编译,可以有效提高程序的执行效率递归lPython对递归函数调用的次数作了限制.l函数sys.getrecursionlimit()返回当前允许的最大递归次数,l而函数sys.setrecursionlimit()可以改变该函数的返回值.l默认的最大递归次数为1000.当一个函数递归次数超过最大递归次数时,就会引发RuntimeError异常.Python 模块l模块:可把一个复杂的程序按功能分开,分别存放到不同文件中,使程序更容易维护和管理。lPython中的模块是以.py结尾的Python代码文件。通过import命令输入,如:importsys(和c中include语句似乎相似)l该import语句共执行三步操作:创建新的名称空间(namespace),该名称空间中拥有输入模块中定义的所有对象;执行模块中的代码;创建该名称空间的变量名。Python 模块limport的使用:limportftplibasftplfromftplibimportFTPPython脚本与模块lpython脚本和模块都是一个以.py结束的文件,那程序是如何判断一个.py文件是作为脚本还是模块呢?l关键是一个名为_name_的变量,如果它的值是_main_,则是作为脚本直接运行,否则是做为模块运行的。if_name_=“_main_”:main()Python 包(package)l我们可以把几个功能相近的模块组成一个Python包,存放到一个目录结构中,通过输入包的路径来调用对对象。例子:/WebDesign_init_.pydesign.pydraw.pyl其中_init_.py是包的初始化文件,可以为空,但是必不可少的。l可以以下列方式引用design模块:importWebDesign.designPython 类l简单例子l#!/usr/bin/pythonl#-*-encoding:utf-8-*-lclasstest:#定义一个test类ldesc=这是一个测试类。#在类中定义一个属性descldef_init_(self,name1):#对象构造函数,初始化类lself.name1=name1ldefshow(self,name2):#在类中定义一个方法show()lprinthelloworldlprintname1:,self.name1lprintname2:,name2l调用lobj=test(这是传递给name1的值)#生成test类的实例对象lprintobj.desc#调用类中的desc属性lobj.show(这是传递给name2的值)#调用类中的show()方法面向对象编程(基于对象)classFoo:def_init_(self,a,b):self.a=aself.b=bdefshow_a(self):printself.adefshow_b(self):printself.b_init_函数:每次生成类的时候都会执行的,self指向类对象自身。记住,类函数(或者叫做方法)它的第一个参数“self”不要忘记写了foo_obj=Foo(ImA,ImB)foo_obj.show_a()foo_obj.b=Helloworld!foo_obj.show_b()命名规范l类的首字母大写,没有特别原因不要在前面加“T”或者“C”什么的l函数和变量尽量全小写,单词间下划线lpython命名规范(约定):l类里面“单下划线”开始的成员变量叫做保护变量,意思是只有类对象和子类对象自己能访问到这些变量;l而双下划线开始的是私有成员,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据。使用私有成员的一个例子classFool:def_init_(self):self._a=None#None就是什么都没有defset_a(self,a):self._a=adefget_a(self):printself._afool_obj=Fool()printfool_obj._a#哼哼,等着报错吧,#只有foo自己才可以看见_afool_obj.set_a(ImA)printfool_obj.get_a()闲言碎语lJava:把对象里面的成员保护起来,程序员似乎养成了习惯。“隐藏实现”?lpythonl真正隐藏实现的方法,就是重定义等号运算符l用直接操作成员变量的方法来做(用等号代替函数)l真正漂亮、收放自如的程序敢于暴露自己的实现细节,用最轻量级的方法来做事情l轻量级的方法通常会很巧妙,但不会很复杂。继承继承classBar(Fool):def_init_(self,a,b,c,d):Fool._init_(self,a,b)#调用父类初始化self.c=cself.d=ddefshow_c(self):printself.cdefshow_d(self):printself.dfoo_obj.show_a()foo_obj.show_b()foo_obj.show_c()foo_obj.show_d()多重继承classMBar(Foo1,Foo2,Foo3,.):.继承l所谓继承就是让新的类,子类得到父类(就是那个Foo)的成员和功能。l但是最好不要忘记子类也需要一个_init_函数,把a、b、c、d这些成员都创建出来,l或者直接调用父类的_init_函数来完成这件事情,并且我们通常是这样做的。简单的网络通信及即时聊天l网络编程。不妨做一个即时聊天工具吧,不过这次的程序很简陋,只能说是一个网络对讲机罢了。fromSimpleXMLRPCServerimportSimpleXMLRPCServerdeffoo():returnHelloworld!server=SimpleXMLRPCServer(localhost,8000)server.register_function(foo)server.serve_forever()用IE来访问http:/localhost:8000看看我们得到了什么?是一个出错页面,不错,这表示我们的服务器工作正常,只是访问的方法不对而已。客户机程序l对应的客户机程序fromxmlrpclibimportServerProxyserver=ServerProxy(http:/localhost:8000)printserver.foo()l服务器返回了Helloworld!。这里localhost是指本机,8000是端口,l我们通常会指定大于1024的端口号。llocalhost我们通常会用域名(机器名)或IP来代替,而端口号是任意的。l下面,该传些东西了。比如发送一句话到服务器上去显示出来。服务端程序fromSimpleXMLRPCServerimportSimpleXMLRPCServerdefmsg(s):printsreturnTrueserver=SimpleXMLRPCServer(localhost,8000)server.register_function(msg)server.serve_forever()对应的客户机程序:fromxmlrpclibimportServerProxyserver=ServerProxy(http:/localhost:8000)whileTrue:msg=raw_input()server.msg(msg)l开个玩笑,一个即时通信工具已经写好了。两台机器互相知道IP或者机器名,协商好端口号。然后打开一个服务器、将客户机指向对方的服务器就可以了。l那么怎么将客户端和服务器合并在一起呢?l因为调用serve_forever()之后程序就停在那里了,所以无法再接收用户输入的东西了。多线程编程importthreadfromSimpleXMLRPCServerimportSimpleXMLRPCServerfromxmlrpclibimportServerProxydefmsg(s):printsreturnTruedefrun_server():my_server=SimpleXMLRPCServer(localhost,8001)my_server.register_function(msg)my_server.serve_forever()defrun_client():your_server=ServerProxy(http:/localhost:8002)whileTrue:msg=raw_input()your_server.msg(msg)thread.start_new_thread(run_server,()run_client()第二个差不多,只是把地址互换importthreadfromSimpleXMLRPCServerimportSimpleXMLRPCServerfromxmlrpclibimportServerProxydefmsg(s):printsreturnTruedefrun_server():my_server=SimpleXMLRPCServer(localhost,8002)my_server.register_function(msg)my_server.serve_forever()defrun_client():your_server=ServerProxy(http:/localhost:8001)whileTrue:msg=raw_input()your_server.msg(msg)thread.start_new_thread(run_server,()run_client()这样,一对对讲机就写好了图形界面:用Tkinter来写一个界面了。首先把窗体画出来。fromTkinterimport*wnd=Tk()wnd.lab=Label(wnd,text=-)wnd.ent=Entry(wnd)wnd.btn=Button(wnd,text=send)wnd.lab.pack()wnd.ent.pack(side=LEFT)wnd.btn.pack(side=LEFT)然后把刚才的网络部分加上去。importthreadfromSimpleXMLRPCServerimportSimpleXMLRPCServerfromxmlrpclibimportServerProxy#第一个对讲机my_server=SimpleXMLRPCServer(localhost,8002)your_server=ServerProxy(http:/localhost:8001)#第二个对讲机(需要交换一下地址)#my_server=SimpleXMLRPCServer(localhost,8001)#your_server=ServerProxy(http:/localhost:8002)defmsg(s):wnd.lab.config(text=s)returnTruedefrun_server():my_server.register_function(msg)my_server.serve_forever()defsend():msg=wnd.ent.get()wnd.ent.select_range(0,len(msg)your_server.msg(msg)wnd.btn.config(command=send)thread.start_new_thread(run_server,()wnd.mainloop()l程序比较长,所以另外一个终端就不写了l注意,这里两台终端的地址是在程序中写死的。而且现在的程序只能显示最近收到的一条消息。l使用Tkinter中的输入框来叫用户自己输入目标机器的地址和端口。l使用Tkinter中的编辑框组件来显示多行消息。48总结l.NETFramework由.NETFramework类库和公共语言运行时两个主要组件组成lCLR是管理用户代码执行的现代运行时环境,它提供JIT编译、内存管理、异常管理和调试等方面的服务lCTS定义声明、定义和管理所有类型所遵循的规则,而无需考虑源语言lCLS是所有针对.NET的编译器都必须支持的一组最低标准,以确保语言的互操作性l命名空间是一组包含相关方法的相似类,专门用于避免类与类之间的名称冲突l即时(JIT)编译器将MSIL代码编译为特定于目标操作系统和计算机体系结构的本机代码- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Python 培训 课件
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【可****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【可****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【可****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【可****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文