首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

python3.7 的新特性

Python生成器异常处理 正如PEP 479中概述(https://www.python.org/dev/peps/pep-0479/),开发了一段时间的一处变更旨在让人们更容易调试Python生成器引发的...在Python 3.7中,生成器引发StopIteration异常后,StopIteration异常将被转换成RuntimeError异常,那样它不会悄悄一路影响应用程序的堆栈框架。...这意味着如何处理生成器的行为方面不太敏锐的一些程序会在Python 3.7中抛出RuntimeError。...更好的解决方案是重新考虑如何构建生成器――比如说,使用return语句来终止生成器,而不是手动引发StopIteration。...Python importlib资源 importlib模块现在可用来读取“资源”,即随Python应用程序一并交付的二进制工件,比如数据文件

1.9K30
您找到你想要的搜索结果了吗?
是的
没有找到

Python -- 异常处理

except IOError:     print "Error: 没有找到文件读取文件失败" else:     print "内容写入文件成功"     fh.close() >>>> python...chmod  -w  testfile >>>> python test.py   //输出如下 Error: 没有找到文件读取文件失败 使用except不带任何异常  try:     正常的操作...finally:     print "Error: 没有找到文件读取文件失败" >>>> python test.py   //输出如下,提前将testfile设为不可写 Error: 没有找到文件读取文件失败...finally:         print "关闭文件"         fh.close() except IOError:     print "Error: 没有找到文件读取文件失败" >>>...StopIteration 迭代器没有更多的值 GeneratorExit 生成器(generator)发生异常来通知退出 StandardError 所有的内建标准异常的基类 ArithmeticError

86830

从yield 到yield from再到python协程

,或者引发另外的一个异常,那么该异常会传播给调用者) 为generator-iterators 添加了一个新的方法close(), 在生成器暂停的位置引发一个GeneratorExit 异常,如果一个生成器发了...StopIteration 异常或者GeneratorExit 异常, close()方法将返回给它的调用者,如果生成是yield 一个值,会引发RuntimeError 异常。...如果一个生成器发了任何其他异常,则会传给他的调用者 ,如果生成器,由于异常退出或者已经正常退出,那么close()不执行任何操作。...,那么throw()将会引发传递相同的异常,如果生成器发了另外一个异常,throw调用将引发异常,总之throw()的行为类似next()或者send() 除了它在挂起的时候引发异常。...如果生成器没有处理这个异常,或者抛出了StopIteration异常,调用方不会报错,如果收到GeneratorExit异常,生成器一定不能产出值,否则解释器会抛出RuntimeError异常。

94740

学习python协程前你必须了解的知识

因为generator保存的是算法,每次调用next(),就计算出下一个元素的值,知道计算到最后一个元素,没有更多的元素时,抛出Stopiteration错误。...之后会继续执行生成器对象中后面的语句,知道遇到下一个yield语句返回。如果在生成器对象方法执行完毕后,依然没有遇到yield语句,跑出StopIteration异常。...因此,一旦产生了GeneratorExit异常,生成器方法后续执行的语句中,不能再有yield语句,否则会产生RuntimeError。...def reader(): # 模拟从文件读取数据的生成器 for i in range(4): yield '***{}***'.format(i) def reader_wrapper...(协程)传送数据 def writer(): # 读取send传进的数据,并模拟写进套接字或文件 while True: w = (yield) #w接收send传进的数据

36620

生成器进化到协程 Part 1

yield 一个值,直到函数迭代器结束并抛出 StopIteration。...这里 for 其实相当于不断地调用 next 并处理 StopIteration c = countdown(3) # next(c) 3 # next(c) 2 # next(c) 1 把生成器当作管道...这时仅允许 return,如果没有捕捉这个错误生成器会静默关闭,不抛出错误。...0 1 抛出错误 调用生成器的 throw 方法可以在 yield 处抛出某个特定类型的错误,如果生成器内部可以捕捉这个错误,那生成器将前进到下个 yield 语句处,并将产出值作为 throw 的返回值..., '运行错误')) apple 捕捉到: 运行错误 banana 生成器返回值 如果在生成器函数中加上 return 那在运行到 return 时将会把返回值作为 StopIteration 的值传递出去

35020

python的异常处理

StopIteration迭代器没有更多的值GeneratorExit生成器(generator)发生异常来通知退出StandardError所有的内建标准异常的基类ArithmeticError所有数值计算错误的基类...except IOError: print "Error: 没有找到文件读取文件失败"else: print "内容写入文件成功" fh.close()Output:--------...except IOError: print "Error: 没有找到文件读取文件失败"else: print "内容写入文件成功" fh.close()在执行代码前为了测试方便,我们可以先去掉...finally: print "Error: 没有找到文件读取文件失败"如果打开的文件没有可写权限,输出如下所示:$ python test.py Error: 没有找到文件读取文件失败同样的例子也可以写成如下方式...以下为与RuntimeError相关的实例,实例中创建了一个类,基类为RuntimeError,用于在异常触发时输出更多的信息。

1K40

Python 异常处理

StopIteration 迭代器没有更多的值 GeneratorExit 生成器(generator)发生异常来通知退出 StandardError 所有的内建标准异常的基类 ArithmeticError...except IOError: print "Error: 没有找到文件读取文件失败" else: print "内容写入文件成功" fh.close() 以上程序输出结果:...,我们可以先去掉 testfile 文件的写权限,命令如下: chmod -w testfile 再执行以上代码: $ python test.py Error: 没有找到文件读取文件失败 ----...finally: print "Error: 没有找到文件读取文件失败" 如果打开的文件没有可写权限,输出如下所示: $ python test.py Error: 没有找到文件读取文件失败...finally: print "关闭文件" fh.close() except IOError: print "Error: 没有找到文件读取文件失败" 当在

1K40

Python 异常处理#学习猿地

错误发生时进行处理 ```python '''语法: try:     可能发生异常错误的代码 except:     如果发生异常则进入 except 代码块进行处理 ''' # 假设读取文件不存在...可以在文件读取前先判断当前的文件是否存在 # 2。也可以使用try 。。。 except。。在错误发生时进行处理 try:     with open('....IndexError as e:  #如果引发了非指定的异常,则无法处理     print(e) # 2。...                  | |      StopIteration      |                迭代器没有更多的值                | |      GeneratorExit...      |        生成器(generator)发生异常来通知退出        | |      StandardError      |              所有的内建标准异常的基类

1.1K10

python中常见的一些错误异常类型

语法:以下为简单的try....except...else的语法:try: #运行别的代码except : #如果在try部份引发了'name'异常except...,: #如果引发了'name'异常,获得附加的数据else: #如果没有异常发生python标准异常----异常名称描述BaseException...所有异常的基类SystemExit解释器请求退出KeyboardInterrupt用户中断执行(通常是输入^C)Exception常规错误的基类StopIteration迭代器没有更多的值GeneratorExit...生成器(generator)发生异常来通知退出StandardError所有的内建标准异常的基类ArithmeticError所有数值计算错误的基类FloatingPointError浮点计算错误OverflowError...访问未初始化的本地变量ReferenceError弱引用(Weak reference)试图访问已经垃圾回收了的对象RuntimeError一般的运行时错误NotImplementedError尚未实现的方法

2.3K20

异常--python异常处理

StopIteration 迭代器没有更多的值 GeneratorExit 生成器(generator)发生异常来通知退出 StandardError 所有的内建标准异常的基类 ArithmeticError...except IOError: print "Error: 没有找到文件读取文件失败" else: print "内容写入文件成功" fh.close() 以上程序输出结果: $ python test.py...except IOError: print "Error: 没有找到文件读取文件失败" else: print "内容写入文件成功" fh.close() 在执行代码前为了测试方便,我们可以先去掉 testfile...finally: print "Error: 没有找到文件读取文件失败" 如果打开的文件没有可写权限,输出如下所示: $ python test.py Error: 没有找到文件读取文件失败 同样的例子也可以写成如下方式...finally: print "关闭文件" fh.close() except IOError: print "Error: 没有找到文件读取文件失败" 当在try块中抛出一个异常,立即执行finally

2.8K20

Python3 常见错误和异常处理

StopIteration 迭代器没有更多的值 \ GeneratorExit 生成器(generator)发生异常来通知退出 \ StandardError 所有的内建标准异常的基类 \ ArithmeticError...\ IOError 输入/输出操作失败 如磁盘满了,输入文件不存在等等 OSError 操作系统错误 一个操作系统级别函数返回错误时会产生OSError WindowsError 系统调用失败 \ ImportError...一般的运行时错误 如果没有其他更特定的异常可用,就要使用RuntimeError异常 NotImplementedError 尚未实现的方法 用户自定义的基类可能产生NotImplementedError...语法: try: #运行别的代码 except : #如果在try部份引发了'name'异常 except ,: ...#如果引发了'name'异常,获得附加的数据 else: #如果没有异常发生 以下为简单的try....except...else的语法: try: int("aaa")

1.5K20
领券