Python培训ppt课件.ppt_第1页
Python培训ppt课件.ppt_第2页
Python培训ppt课件.ppt_第3页
Python培训ppt课件.ppt_第4页
Python培训ppt课件.ppt_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Python培训 Python基本语法与编程 1 2 目标 使用Python Python基础篇 LifeIsShortYouNeedPython Python简介Python是一种开源的 解析性的 面向对象的编程语言 Python使用一种优雅的语法 可读性强Python支持类和多层继承等的面向对象编程技术 Python可运行在多种计算机平台和操作系统中 如unix windows MacOS OS 2等等 3 使用python安装python 请参阅 http www python org 运行python脚本 交互式运行 在Windows平台下有GUI界面 执行python脚本文件在Linux UNIX环境下运行程序 在python头部加一行 usr local bin pythonchmod xmyfile py myfile py 当然也可以直接以pythonmyfile方式执行 4 快速开始简单语句 print helloworld 计算器1 1格式化字符串print Thetotalis 0 2f 56 3598 5 注释和模块 注释 我是注释 我的注释 模块importsyssys exit 6 Python的数据类型 变量的定义 在python中 变量的类型是由赋给它的数值定义的 q 7 q其为数值型变量q Seven q为字符串型变量基本数据类型 字符串 整数 浮点数 虚数 布尔型 集合类型 列表 List 元组 Tuple 字典 Dictionary或Hash 7 Python的数据类型 列表 List List的定义 aList 23 或者bList 1 2 3 List的使用 可以像c语言中数据一样引用list中的元素 printbList 1 List常用操作 append del len list 0 5 8 Python的数据类型 列表 方法 列表对象支持的方法 演示 append x count x X在List中的个数extend L Index x insert i x pop x remove x reverse sort 9 Python的数据类型 元组 Tuple Tuple的定义aTuple 1 3 5 printaTuple元组可以用方括号括起下标做索引元组一旦创建就不能改变列表大部分操作同样适用于元组 10 Python的数据类型 字典 Hash 字典是一个用大括号括起来的键值对 字典元素分为两部份 键 key 和值 字典是python中唯一内置映射数据类型 通过指定的键从字典访问值 字典的使用 a a aa b bb a c cc a has key a 11 Python的数据类型 字典 常用方法 字典的常用方法 演示 has key x keys values items clear copy update x get x y 12 Python控制语句if Python支持三种不同的控制结构 if for和while 不支持C语言中的switch语句 1 if语句的用法 ifEXPRESSION1 STATEMENT1elifEXPRESSION2 STATEMENT2else STATEMENT3 13 Python控制语句for for语句的用法 mylist forstatement forwordinmylist printwordelse 最终执行print Endlist 14 Python控制语句while while语句的用法 a 0whilea 5 a a 1printaelse print a svalueisfive 15 Python循环中的控制语句 break 终止当前循环continue 终止本次循环pass 什么事都不错 16 Python函数 函数定义 deffunction name arg1 arg2 statement returnvalue 函数名 函数名必须以下划线或字母开头 可以包含任意字母 数字或下划线的组合 不能使用任何的标点符号 函数名是区分大小写的 函数名不能是保留字 17 Python函数作用域 Python使用名称空间的概念存储对象 这个名称空间就是对象作用的区域 不同对象存在于不同的作用域 不同对象的作用域规则 每个模块都有自已的全局作用域 函数定义的对象属局部作用域 只在函数内有效 不会影响全局作用域中的对象 赋值对象属局部作用域 除非使用global关键字进行声明 LGB规则大多数名字引用在三个作用域中查找 先局部 Local 次之全局 Global 再次之内置 Build in 若仍然找不到这个变量名 则引发NameError异常 18 Python函数参数 函数的参数分类 默认参数 deffunction ARG VALUE 元组参数 deffunction ARG 字典参数 deffunction ARG 一些规则 默认值必须在非默认参数之后 在单个函数定义中 只能使用一个tuple参数 ARG 和一个字典参数 ARG tuple参数必须在连接参数和默认参数之后 字典参数必须在最后定义 19 内置特殊函数 apply 函数apply func args kwargs 函数用于当函数参数已经存在于一个元组或字典中 间接地调用函数 args是一个包含将要提供给函数的按位置传递的参数的元组 如果省略了args 任何参数都不会被传递 kwargs是一个包含关键字参数的字典 foo 3 x name Dave id 12345 apply foo 3 x name Dave id 12345 lambda操作符lambdaargs expressionargs是一个用逗号分隔的参数 expressin是一个调用这些参数的表达式 20 map zip reduce 和filter t map func s 即t i func s i 需要注意的是 func函数必须有且只有一个参数 a 1 2 3 4 5 6 b map lambdax 3 x a b 3 6 9 12 15 18 t2 map func s1 s2 sn t3 map None s1 s2 sn zipls zip s1 s2 sn zipls i s1 i s2 i sn i zip 函数取决于最短序列 reduce func s 函数从一个序列收集信息 然后只返回一个值 例如求和 最大值 等 b reduce sum 1 2 3 4 b 1 2 3 4 10filter func s 是个序列过虑器 使用func 函数来过滤s中的元素 c filter lambdax x 4 1 2 3 4 c 1 2 3 21 列表内涵 列表内涵可以代替许多调用map 和filter 函数的操作 一般形式是 表达式foritem1in序列1foritem2in序列2 foritemNin序列Nif条件表达式 s foritem1insequence1 foritem2insequence2 foritemNinsequenceN ifcondition s append expression 22 Demo importmatha 3 5 2 10 7 8 b abc c 2 sforsina c 6 10 4 20 14 16 d sforsinaifs 0 d 5 2 7 8 e x y forxina e 5 a 5 b 5 c foryinb 2 a 2 b 2 c ifx 0 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 81024 forx yinf h reduce lambdax y x y 平方根的和 math sqrt x x y y forx yinf 23 eval exec execfile 和compile eval str globals locals 函数将字符串str当成有效Python表达式来求值 并返回计算结果 同样地 exec语句将字符串str当成有效Python代码来执行 提供给exec的代码的名称空间和exec语句的名称空间相同 最后 execfile filename globals locals 函数可以用来执行一个文件 看下面的例子 eval 3 4 7 exec a 100 a100 execfile r c test py hello world 24 eval exec execfile 名字空间 默认eval exec execfile 所运行的代码都位于当前的名字空间中 eval exec 和execfile 函数也可接受一个或两个可选字典参数作为代码执行的全局名字空间和局部名字空间Demo globals x 7 y 10 birds Parrot Swallow Albatross locals 将上边的字典作为全局和局部名称空间a eval 3 x 4 y globals locals exec forbinbirds printb inglobals locals注意语法execfile foo py globals locals exec是一个语句 就象print或while 而eval 和execfile 则是内建函数 25 compile str filename kind 函数 compile 将一个字符串编译为字节代码 str是将要被编译的字符串 filename是定义该字符串变量的文件 kind参数指定了代码被编译的类型 single 指单个语句 exec 指多个语句 eval 指一个表达式 返回一个代码对象 该对象也可以被传递给eval 函数和exec语句来执行预编译 可以有效提高程序的执行效率 26 递归 Python对递归函数调用的次数作了限制 函数sys getrecursionlimit 返回当前允许的最大递归次数 而函数sys setrecursionlimit 可以改变该函数的返回值 默认的最大递归次数为1000 当一个函数递归次数超过最大递归次数时 就会引发RuntimeError异常 27 Python模块 模块 可把一个复杂的程序按功能分开 分别存放到不同文件中 使程序更容易维护和管理 Python中的模块是以 py结尾的Python代码文件 通过import命令输入 如 importsys 和c中include语句似乎相似 该import语句共执行三步操作 创建新的名称空间 namespace 该名称空间中拥有输入模块中定义的所有对象 执行模块中的代码 创建该名称空间的变量名 28 Python模块 import的使用 importftplibasftpfromftplibimportFTP 29 Python脚本与模块 python脚本和模块都是一个以 py结束的文件 那程序是如何判断一个 py文件是作为脚本还是模块呢 关键是一个名为 name 的变量 如果它的值是 main 则是作为脚本直接运行 否则是做为模块运行的 if name main main 30 Python包 package 我们可以把几个功能相近的模块组成一个Python包 存放到一个目录结构中 通过输入包的路径来调用对对象 例子 WebDesign init pydesign pydraw py其中 init py是包的初始化文件 可以为空 但是必不可少的 可以以下列方式引用design模块 importWebDesign design 31 Python类 简单例子 usr bin python encoding utf 8 classtest 定义一个test类desc 这是一个测试类 在类中定义一个属性descdef init self name1 对象构造函数 初始化类self name1 name1defshow self name2 在类中定义一个方法show print helloworld print name1 self name1print name2 name2调用obj test 这是传递给name1的值 生成test类的实例对象printobj desc 调用类中的desc属性obj show 这是传递给name2的值 调用类中的show 方法 32 面向对象编程 基于对象 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 I mA I mB foo obj show a foo obj b Helloworld foo obj show b 33 命名规范 类的首字母大写 没有特别原因不要在前面加 T 或者 C 什么的函数和变量尽量全小写 单词间下划线python命名规范 约定 类里面 单下划线 开始的成员变量叫做保护变量 意思是只有类对象和子类对象自己能访问到这些变量 而 双下划线 开始的是私有成员 意思是只有类对象自己能访问 连子类对象也不能访问到这个数据 34 使用私有成员的一个例子 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 I mA printfool obj get a 35 闲言碎语 Java 把对象里面的成员保护起来 程序员似乎养成了习惯 隐藏实现 python真正 隐藏实现 的方法 就是重定义等号运算符用直接操作成员变量的方法来做 用等号代替函数 真正漂亮 收放自如的程序敢于暴露自己的实现细节 用最轻量级的方法来做事情轻量级的方法通常会很巧妙 但不会很复杂 36 继承 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 37 继承 所谓继承就是让新的类 子类得到父类 就是那个Foo 的成员和功能 但是最好不要忘记子类也需要一个 init 函数 把a b c d这些成员都创建出来 或者直接调用父类的 init 函数来完成这件事情 并且我们通常是这样做的 38 简单的网络通信及即时聊天 网络编程 不妨做一个即时聊天工具吧 不过这次的程序很简陋 只能说是一个网络对讲机罢了 fromSimpleXMLRPCServerimportSimpleXMLRPCServerdeffoo return Helloworld server SimpleXMLRPCServer localhost 8000 server register function foo server serve forever 用IE来访问http localhost 8000看看我们得到了什么 是一个出错页面 不错 这表示我们的服务器工作正常 只是访问的方法不对而已 39 客户机程序 对应的客户机程序fromxmlrpclibimportServerProxyserver ServerProxy http localhost 8000 printserver foo 服务器返回了 Helloworld 这里localhost是指本机 8000是端口 我们通常会指定大于1024的端口号 localhost我们通常会用域名 机器名 或IP来代替 而端口号是任意的 下面 该传些东西了 比如发送一句话到服务器上去显示出来 40 服务端程序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 41 开个玩笑 一个即时通信工具已经写好了 两台机器互相知道IP或者机器名 协商好端口号 然后打开一个服务器 将客户机指向对方的服务器就可以了 那么怎么将客户端和服务器合并在一起呢 因为调用serve forever 之后程序就停在那里了 所以无法再接收用户输入的东西了 42 多线程编程 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 43 第二个差不多 只是把地址互换 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 44 这样 一对对讲机就写好了 图形界面 用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 然后把刚才的网络部分加上去 45 impor

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论