Python Training 4 异常及迭代_第1页
Python Training 4 异常及迭代_第2页
Python Training 4 异常及迭代_第3页
Python Training 4 异常及迭代_第4页
Python Training 4 异常及迭代_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

1、NSD1 Python Training 4 異常、迭代異常、迭代Ian04/10/20151上節回顧根據自己熟悉的一個系列的產品,新建一個類。類中要求實現類的繼承、封裝和多態三個特性。并能實現一個或多個實現除了構造方法和析構方法以外魔法方法。2Agenda異常迭代3異常4什么是異常錯誤从软件方面来说, 错误是语法或是逻辑上的 语法错误指示软件的结构上有错误, 导致不能被解释器解释或编译器无法编译. 这些错误必须在程序执行前纠正. 逻辑错误可能是由于不完整或是不合法的输入所致; 在其他情况下, 还可能是逻辑无法生成, 计算, 或是输出结果需要的过程无法执行. 这些错误通常分别被称为域错误和范围

2、错误.当 Python 检测到一个错误时, 解释器就会指出当前流已经无法继续执行下去. 这时候就出现了异常.5什么是異常異常异常是因为程序出现了错误而在正常控制流以外采取的行为. 引起异常发生的错误 检测(和采取可能的措施)6Python 中的异常7异常的检测和处理在Python中,异常可以通过 try 语句来检测.try finally try之后,只允許跟一個finally子句try except try之后,可以跟隨一個或多個except子句try except finallytry except elsetry except else finally8异常的检测和处理try final

3、ly9try: statement finally: statement 异常的检测和处理try except10try: statement except: statement 异常的检测和处理try except11try: statement except ErrorName: statement 异常的检测和处理try except12try: statement except ErrorName, arg : statement 异常的检测和处理13try except finallytry: statement except : statement finally: stateme

4、nt 异常的检测和处理14try except finally异常的检测和处理15try except elsetry: statement except : statement else: statement 异常的检测和处理try except else finally(厨房一锅端)16異常觸發raise 語句raise SomeException , args 第一个参数,SomeExcpetion,是触发异常的名字 第二个符号为可选的args(比如参数,值),来传给异常.17raise 語句18Raise 語法語法描述描述raise exclass触发一个异常,从exclass 生成一

5、个实例(不含任何异常参数)raise exclass()同上, 同样也没有异常参数raise exclass, args触发一个异常,但同时提供的异常参数args,可以是一个参数也可以元组raise exclass(args)同上assert(斷言)assert expression, arguments 第一個參數expression為一個返回值為bool類型的表達式、值或者函數。 第二個參數arguments,為可選參數。當斷言失敗,它則為AssertionError的參數。19Python內建異常20異常名稱異常名稱描述描述異常名稱異常名稱描述描述BaseException所有异常的基类

6、LookupErrord无效数据查询的基类Exception常规错误的基类IndexError序列中没有没有此索引(index)SystemExitpython 解释器请求退出KeyError映射中没有这个键KeyboardInterrupt用户中断执行(通常是输入C)MemoryError内存溢出错误StopIteration迭代器没有更多的值NameError未声明/初始化对象 (没有属性)GeneratorExit生成器(generator)发生异常来通知退出UnboundLocalError访问未初始化的本地变量StandardError所有的内建标准异常的基类ReferenceErr

7、ore弱引用试图访问已经垃圾回收了的对象OSError操作系统错误RuntimeError一般的运行时错误WindowsErrorWindows 系统调用失败NotImplementedError尚未实现的方法ImportError导入模块/对象失败SyntaxErrorPython 语法错误ArithmeticError所有数值计算错误的基类IndentationError缩进错误FloatingPointError浮点计算错误TabErrorgTab 和空格混用ZeroDivisionError除(或取模)零 (所有数据类型)SystemError一般的解释器系统错误AssertionEr

8、ror断言语句失败TypeError对类型无效的操作AtributeError对象没有这个属性ValueError传入无效的参数EOFError没有内建输入,到达EOF 标记EnvironmentError操作系统错误的基类自定義異常異常是一個類。異常是BaseException類的派生類。21自定義的異常通常繼承自定義的異常通常繼承Exception類類异常和sys模块另一种获取异常信息的途径是通过sys 模块中exc_info()函数.22討論23迭代24什么是迭代迭代是重復做一件事很多次。就像在循環中做一樣for敘述是通過迭代序列帶完成循環。25如何迭代當一個對象實現了_iter_魔法方

9、法,則可以對該對象進行迭代。_iter_方法返回一個迭代器。 迭代器就是具有next方法的對象,該方法在調用時候不需要任何參數。 在調用next方法時,迭代器會返回它的下一個值。 如果在調用next方法時,迭代器沒有值可以返回,則觸發StopIteration異常26如何迭代27如何迭代內建函數iter可以從可迭代的對象中獲得迭代器28從迭代器到序列迭代對象除了可以進行迭代外,還能通過list或tuple函數將迭代對象轉換為列表或元組。29函數的迭代普通的函數語法定義的迭代器又稱為生成器生成器。使用yeild關鍵字來定义函數的迭代。30遞歸迭代什么是遞歸?求n的階乘(n!)?31n!n=1 n

10、!=1n1 n!=n*(n-1)!def factorial(n): if n = 1: return 1 else: return n*factorial(n-1)遞歸迭代请写一段程序将以下的多维数组转换为一维数组lst = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,2032生成器推導式(expression for_statement where)33列表推導式列表推導式和生成器推導式的語法一樣。區別在于:列表推導式使用中括號”,生成器推導式使用小括號”()”列表推導式返回的是一個list,生成器推導式返回的是一個迭代生成器。34習題兔子繁殖問題迭代類異常處理調用next方法時,返回當前月數加當前兔子總數。有一對兔子,從第三個月起,每個月都生一對兔子;小兔子

温馨提示

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

评论

0/150

提交评论