PYTHON基础知识-函数、异常处理、类和对象课件_第1页
PYTHON基础知识-函数、异常处理、类和对象课件_第2页
PYTHON基础知识-函数、异常处理、类和对象课件_第3页
PYTHON基础知识-函数、异常处理、类和对象课件_第4页
PYTHON基础知识-函数、异常处理、类和对象课件_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

1、PYTHON基础知识函数、异常处理、类和对象2020年2月第1页,共41页。函数用来将复杂问题分解为若干个子问题,并逐个解决。函数允许我们按照这样的方式编写或阅读程序:(1)首先关注所有任务。(2)然后关注如何完成每项任务。函数可以消除代码的重复性提高代码重用。函数按是否有返回值分为两种:(1)有返回值,甚至是多个返回值。(2)无返回值,仅仅执行一个操作。PYTHON函数第2页,共41页。1、 內建函数内建函数是语言已经提交给你设计好可以直接使用的函数。可类比为微小的程序。(接收输入、处理输入、获得输出)例如:int()函数,将浮点数变成整数。chr()函数,将ASCII码变成字符。ord()

2、函数,求出函数对应的ASCII码。注:函数有形参,表示告知调用者这个函数需要什么样的输入。当实际调用函数时,需要输入真实值,被称为实参,调用函数得到结果。PYTHON函数第3页,共41页。2、用户自定义函数用户可以按照自己的需要定义自己的函数。函数定义形式如下:def functionName(arg1, arg2,argN): 缩进的语句块 return 表达式在函数的定义中,arg1,,argN表示形参返回的表达式可以计算任何类型的字面值。将实参传递给形参有三种方式:按照位置传递。按照关键字传递。按照默认值传递。函数的命名规则与变量命名规则一样,包括数字、字母和下划线,但是数字不能作为开始

3、字符。PYTHON函数第4页,共41页。3、向函数传值通过形参传递实参给函数,即使改变了形参的值也不会改变实参的值。要改变实参的值,只能通过函数返回值,赋给实参。例如:PYTHON函数第5页,共41页。4、具有多个参数的函数当函数有多个输入时,需要传入多个参数。形式如:def functionWithMultiArgs(arg1, arg2,argN): 缩进的语句块 return 表达式arg1到argN表示N个形参,函数调用时,实参通过形参传递PYTHON函数第6页,共41页。5、函数可以返回任何类型一个函数除了可以返回数值或字符串,还可以返回任何类型的值。例如返回布尔型、列表、元组、集合

4、、字典等等。def fReturnsBool(): return 3=4def fReturnsList(): return 1,2,3,4,5def fReturnsTuple(): return (1,2,3) 或者 return 1,2,3 PYTHON函数第7页,共41页。6、无返回值和无参函数无返回值函数就是函数执行完毕后没有返回值,不包含return语句,它们可能有可能没有参数。形如:def fun(arg1,argN): 缩进的语句块可以看出没有返回语句。无参函数就是不传递任何参数。def fun(): 缩进的语句块 PYTHON函数第8页,共41页。7、变量作用域一个变量的作用

5、域指的是程序中可以引用它的范围。变量作用域分为两种:(1)局部作用域:在函数内部建立的变量只能被同一函数内部的语句访问,并且当函数退出后变量就不存在了,这样变量的存在范围就是局部的,或者说变量具有局部作用域。(2) 全局作用域:一个变量可以被程序中的任何部分识别,这样的变量具有全局作用域。注:(1)一种将变量设为全局的方式是将创建它的赋值语句放在程序的顶部。 (2)任何函数都能读取全局变量的值,但是不能修改它,除非修改语句之前声明变量的全局性:global 全局变量名global是关键字 (3)程序中应避免使用全局变量,防止可读性降低和错误。PYTHON函数第9页,共41页。8、命名常量程序中

6、有时会有多次使用的特殊变量,例如圆周率、e=2.71828,它们一般不应被修改。为了在程序中标注这些特殊常量,Python建议定义命名常量。规则:名字使用大写字母的单词,并且单词间使用下划线分隔,并赋予一个常量。例如:INTEREST_RATE = 0.04PI = 3.1415926BOOK_TITLE = “Programming with Python”注:命名常量本质上是变量可以被修改,但是由于特殊的命名方式,提示程序员它不应被修改。PYTHON函数第10页,共41页。9、库模块Python通过库模块的文件支持函数重用。库模块是一个扩展名为.py的文件,包含了可以被其他任何函数使用的函

7、数和变量。使用import 库模块。例如:在module1.py 中定义了一个函数sayHello():def sayHello(): print(“hello in module1”)这样这个库模块module1中的函数就可以在其他程序中重用。使用import module1即可以使用module1.sayHello()或者使用from module1 import *这样可以直接使用sayHello()库模块管理是Python项目管理的有力工具,不仅可以用于函数、变量,甚至可以用于类。PYTHON函数第11页,共41页。10、调用其他函数一个函数可以调用另一个函数,当被调用函数结束时(re

8、turn语句返回或者函数最后一个语句执行完毕后),流程控制将会返回到调用函数中调用发生之后的位置。例如:def main(): firstPart() print(str(4)+”: from the main”) def firstPart(): print(str(1) + “: from the firstPart”)注:在非并行编程中,程序的执行时顺序的。PYTHON函数第12页,共41页。11、返回多个值的函数一般情况下,函数只返回一个值,例如一个对象、数字、字符或布尔值。然后有的时候函数需要返回多个值,这要借助于元组。一个元组中可以包含多个元素,因此可以完成“用盒子装着多个值返回”

9、的任务。例如:INTEREST_RATE = 0.04def balanceAndInterest(prin, years): balance = prin * (1+ INTEREST_RATE )* years) interestEarned = balance prin return (balance, interestEarned ) 或者 return balance, interestEarned 调用时:bal, intEarned = balanceAndInterest(10, 5)PYTHON函数第13页,共41页。12、列表解析当我们想要对列表中的每个元素执行一个函数时,

10、常见的方式是通过循环控制结构,但是,更简单的方法是列表解析。语法:list2 = f(x) for x in list1例如:list1 = “1”,”2”,”3”,实现字符串转换为整数1ist2 = int(x) for x in list1PYTHON函数第14页,共41页。13、参数的默认值参数的默认值是:函数调用时参数的默认取值。由于在很多时候,有些参数的取值可以是缺省的,这样函数就可以在默认的状态下工作。语法: 例如:def total(w,x,y=10): return (w*x)+ytotal(2,3) : 18total(2,3,4) : 12注:在函数定义中,没有默认值的参数

11、必须放在有默认值的参数之前。def func(par1, par2=50, par3) 就是非法的。PYTHON函数第15页,共41页。14 按参数名传递实际参数可以通过使用相应形式参数的名字传递给函数,而不是根据位置。这种传值方式称为关键字传值。例如:total(w=2, x=3)或者total(x=3, w=2)或者total(2,x=3)注:按位置传递的实际参数必须要放在按关键字传递的实际参数前面。total(w=2, 3)非法PYTHON函数第16页,共41页。15、Lambda表达式Lambda表达式是一行代码构成的微型函数,经常用在一个需要简单函数的地方。它用于计算一个表达式,但是

12、不能用来代替一个复杂的函数。语法:lambda arg1, arg2, :expression例1:List1.sort(key=lambda x:x-1)PYTHON函数第17页,共41页。16、sorted函数前面提到的sort函数直接实现列表中的元素排序,sorted函数会返回一个新的已排序的列表。例如:list2 = sorted(list1)sorted()方法同样可以使用key和reverse参量。注意:list.sort()与sorted()的区别:list.sort()是在原列表自身上排序,执行完毕后list列表就修改了,sort()方法只能用在列表上。sorted()函数是重

13、新生成一个排好序的列表,而原列表不变,并且sorted()不仅可以用在列表上,还可以用在元组和字符串中。PYTHON函数第18页,共41页。Python提供了一种异常处理机制,使得程序在运行阶段发生异常时,程序员有机会处理并恢复。1、异常异常是一种运行时错误,通常是由于程序的运行状态超出了程序员所掌控的范围。例如:不合法输入或者一个文件无法被程序访问。在编写程序时,程序员有责任预料到异常的发生并编写代码来解决这种情况,这就是异常处理。注:如果在程序中没有明确包含异常处理代码,Python会输出栈回溯错误信息并在异常发生地方终止程序。异常处理第19页,共41页。2 常见异常异常处理异常名描述与例

14、子AttributeError向一个对象发起不可用的功能请求。(1,2,3).sort()FileNotFoundError请求的文件不存在,open(“not.txt”,”r”)ImportErrorImport语句无法找到请求的模块。Import 不存在的模块IndexError索引越界。letter=“abc”7KeyError字典中无该键。Word=dc,c不存在NameError变量不存在。term=word,word不存在。TypeError参数类型错。x=len(23)ValueError参数类型对,但是值错。L.remove(item),但是item不在list中ZeroDiv

15、isionError除数是0异常。num=1/0, 23%0第20页,共41页。3 处理一个与多个异常Try:Except :Except :异常处理如果在执行try语句时发生异常,try语句余下的部分会被忽略。第21页,共41页。4 一个块捕获多个异常异常处理第22页,共41页。5 捕获异常信息try: 测试代码块except 异常类型1 as e1: 异常处理代码块except 异常类型2 as e2: 异常处理代码块异常处理except ExceptionType as exp:只有发生特定异常才会执行,并且问题的附加信息赋值给了exp变量。第23页,共41页。6、else与finall

16、y子句(1)try语句在except子句后可以包含一个else子句。当没有错误发生时,将执行else子句下面的子句。在这里可以以这种方式处理不需要异常处理保护的代码。语法:try: 需要保护测试的代码except exceptionType as e: 异常处理代码else: 不需要保护测试的代码异常处理第24页,共41页。6、else与finally子句(2)一个try语句可以以一个finally子句结束,通常来说,finally子句中的语句用来清理资源,例如未被关闭的文件等。一个try语句必须至少包含except和finally子句中的一个。语法:try: 需要测试保护的代码except

17、exceptionType as e: 异常处理代码finally: 无论如何都要执行的代码异常处理Note:finally不能放置于else前面第25页,共41页。传统程序的设计,随着项目的扩大、复杂度的增加,参与项目的人员也越来越多,同时整个程序的关联性和依赖性呈指数级增加。一个程序员在代码处的小小改动就可能连带整个项目作出巨大改变,解决程序依赖性的重要原则就是:数据隐藏,即在开发的过程中尽可能地隐藏程序的实现细节,是面向对象设计的重要原则。对象是数据以及对数据操作方法的封装,其他程序员在使用一个对象时,仅需要关注该对象的实现功能以及相关参数,而不需要知道这个对象的具体数据以及实现细节。类

18、是对一类事物的描述,包括属性和方法。类与对象第26页,共41页。1、 內建类内建类就是Python语言已经定义好的基础类,用户可以直接使用。例如:整数类、浮点数类、字符串类、列表类、元组类、集合类、字典类。注:内建类可以直接使用,而无需重复定义。类与对象第27页,共41页。2、用户自定义类用户可以定义自己的类,每个类包含其属性数据和接口方法。类的实现称为对象,类是对象的描述,对象是类的一个实例。例如把类比作模具,蛋糕就是用模具做出来的实例。类的定义语法:class ClassName: 类的一系列方法注:(1)类名规则:类名与变量命名相同,但是一般首字母大写,其驼峰式命名。(2)类方法定义与一

19、般函数相同,主要区别是第一个参数为self。当创建一个对象时,每个方法中的self参数都指的是这个对象,以便方法知道具体操作的是哪个对象。类与对象NOTE:没有()第28页,共41页。2、用户自定义类类是创建所有对象的模板,定义了所有对象共同具体方法和属性。从类创建对象的方式:对象名=类名(参数1,参数2,)类方法的使用:对象名.接口方法(参数)类与对象第29页,共41页。3、初始化方法的其他形式构造函数中的类属性,除self之外,可以有参,也可以无参。类与对象Note:第三个初始化方法创建对象时,必须提供两个参数。第30页,共41页。4、类定义中方法的数量类中可以包含很多方法,此外,定义没有

20、方法的类也是合法的。例如:class Trival: pass类与对象第31页,共41页。习题:请定义一个圆形类,构造函数传入半径,可以修改和获取圆的半径,同时定义一个接口函数求圆的面积。类与对象第32页,共41页。难道python所有东西都是透明的?1.关键字public可以将类的属性和方法为是公有的,可以被该类的所有成员所访问;2.关键字private可以将类的属性和方法为是私有的,它不能直接被对象访问。公有和私有公有属性和方法可以通过(.)操作符进行访问类与对象第33页,共41页。难道python所有东西都是透明的?1.关键字public可以将类的属性和方法为是公有的,可以被该类的所有成员所访问;2.关键字private可以将类的属性和方法为是私有的,它不能直接被对象访问。公有和私有类与对象第34页,共41页。如何解决?方法:公有和私有类与对象第35页,共41页。继承是面向对象设计的一个重要特色,它允许基于现有的类(也称超类、父类或基类)来更新创建一个新类(也称子类、派生类)。子类可以继承

温馨提示

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

评论

0/150

提交评论