首页 > 其他分享 >异常捕获,生成器对象

异常捕获,生成器对象

时间:2022-10-17 21:25:30浏览次数:52  
标签:__ 捕获 生成器 yield next print 异常 代码

异常常见类型

SyntaxError  》》语法错误
NameError》》名称错误
IndexError》》索引错误
KeyError》》字典键错误
IndentationError》》缩进错误

异常处理语法结构

1.基本语法结构
	try:
    	待监测的代码(可能会出错的代码)
    except:错误类型
        针对上述错误类型制定的方案
2.查看错误的信息
	try:
        待监测的代码(可能会出错的代码)
    except:错误类型 as e :
    	针对上述错误类型制定不同的方案
3.针对不同的错误类型制定不同的解决方案
     try:
    	待监测的代码(可能会出错的代码)
     except  错误类型1 as e :
    	针对上述错误类型1制定的方案
     except 错误类型2 as e :
         针对上述错误类型2制定的方案
      except 错误类型3 as e :
    	针对上述错误3制定的方案
4.万能异常Exception/baseExcption
	try :
        待监测的代码(可能会出错的代码)
     except Exception as e :
    针对各种常见的错误类型全部统一处理
5.结合else使用
     try:
    	待监测的代码(可能会出错的代码)
     except Exception as e:
        针对各种常见的错误类型全部统一处理
      else:
    	try 的子代码正常运行结束没有任何的报错后在执行else子代码
6.结合finally使用
		try:
    		待监测的代码(可能会出错的代码)
        except Exception as e :
            针对各种常见的错误类型全部统一处理
        else:
            try的子代码正常运行结束没有任何的报错后,在执行else 子代码
        finally:
           无论try的子代码是否报错,最后都要执行finally子代码

异常处理实战应用

1.异常处理能尽量少用就少用

2.被try检测的代码能尽量少就尽量少

3.当代码中可能会出现一些无法控制的 情况报错才应该考虑使用

eg:使用手机访问网络软件 断网

编写网络爬虫程序请求数据断网

课堂练习:
"""使用while循环+异常处理+迭代器对象  完成for循环迭代取值的功能"""
 l1 = [11,22,33,44,55,66,77,88,99,100]
iter_l1 =l1.__iter__()  #1.先把列表转换成迭代器对象
while True:# 2.用while 循环让迭代器对象反复执行__next__(双下next)
    try:
        print(iter_l1.__next__()) # 用双下next循环取出值 
    except StopAsyncIteration as e :
        break# 停止循环

生成器对象

1.本质
内置有__iter__和__next__的迭代器对象
2.区别
迭代器对象是解释器自动提供的
	数据类型/文件对象》》:迭代器对象(生成器)
3.创建生成器的基本语法
函数体代码中填写yield关键字
def my_iter():
    print('haha')
    yield
     # def my_iter():
    #     print('哈哈哈 椰子汁很好喝')
    #     yield
    '''1.函数体代码中如果有yield关键字 
        那么函数名加括号并不会执行函数体代码
        会生成一个生成器对象(迭代器对象)
    '''
  res = my_iter()
    '''2.使用加括号之后的结果调用__next__才会执行函数体代码'''
     res.__next__()
    '''3.每次执行完__next__代码都会停在yield位置 下次基于该位置继续往下找第二个yield'''
    def my_iter():
        print('哈哈哈 ')
        yield 111, 222, 333
        print('呵呵呵 ')
        yield 111, 222, 333
        print('嘿嘿嘿 ')
        yield 111, 222, 333
        print('哼哼哼')
        yield 111, 222, 333
    res = my_iter()
    r1 = res.__next__()
    print(r1)
    r2 = res.__next__()
    print(r2)
    r3 = res.__next__()
    print(r3)
    r4 = res.__next__()
    print(r4)
   4.yield还有点类似于return 可以返回返回值

yield 冷门用法

  def eat (name, food = None):
        print(f'{name}进行准备
     whlie True:
        food = yield
        print(f'{name}开始}
              
res = eat('jason')
res.__next__()

生成器表达式

生成器表达式就是生成器的简化写法!主要就是为了节省内存

#列表生成式:
l1=[i for i in range(5)]
print(l1) #结果为:[0,1,2,3,4]

#生成器表达式(没有元组生成式)
l1=(i for i in range(5))
print(l1) #结果为:<generator object <genexpr> at 0x000002CECB2BE120>
#print(l1.__next__()) #结果为:0
#print(l1.__next__()) #结果为:1  需打印调用多次才可以取完
for i in l1:
    print(i) #结果为:把0~4循环打印出来

标签:__,捕获,生成器,yield,next,print,异常,代码
From: https://www.cnblogs.com/lvqingmei/p/16800724.html

相关文章

  • Java异常处理
    一、异常概念:异常:即指在程序执行的过程中,出现非正常情况,最终导致JVM的非正常停止。在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建一个异常对象并抛出......
  • 异常处理与生成器对象和生成器表达式
    异常常见类型syntaxError语法错误NameError当你引用了变量、模块、类、函数或代码中没有定义的其他名称时,将引发NameErrorIndexError当你尝试从序列(如列表或......
  • 异常处理与生成器对象
    异常常见类型异常类型有很多种异常类型就是我们一段代码在运行时遇到bug终止运行.返回给我们一段报错信息,其中就有异常类型。SyntaxError语法错误NameError名字错误......
  • 异常处理、生成式对象
    1.异常常见类型SyntaxError:语法错误NameError:名字错误,一般由于变量名未定义造成IndexError:索引错误,列表的索引值超过了范围KeyError:字典键错误,字典的键找不到Inde......
  • 异常处理及生成器
    异常处理及生成器异常处理1.异常 异常就是代码运行报错,行业俗称叫bug 代码运行中一旦遇到异常会直接结束整个程序的运行,我们在编写代码的过程中要尽可能的避免2.异常......
  • 异常处理(补充)及生成器基础知识
    昨日内容回顾重要内置函数map()映射 zip()拉链 filter()过滤 sorted()排序常见内置函数abs() round() bytes() int() bin() oct() hex() chr() ord() eval() exec(......
  • 分别使用BP/RBF/GRNN神经网络识别航迹异常matlab仿真
    一、理论基础1.1基于BP神经网络的识别1.2基于RBF神经网络的识别1.3基于GRNN神经网络的识别二、核心程序三、仿真测试结果作者ID:fpga和matlabCSDN主页:https://blog.c......
  • 异常处理 生成器
    今日内容异常常见类型NameErrorIndentationErrorSyntaxErrorKeyErrorSyntaxError异常处理语法结构1.基本语法结构try:待检测的代码(可能会出现错误的代码......
  • day16异常以及生成器
    目录今日内容详细异常常见类型异常处理语法结构异常处理补充异常处理实战应用生成器对象课堂练习yield冷门用法生成器表达式今日内容详细异常常见类型AttributeError......
  • 异常捕捉/生成器
    异常常见类型SyntaxError-语法错误NameError-变量名类型错误IndexError-索引错误KeyError-字典键错误IndentationError-缩进错误#注意我们最不允许犯的......