异常处理 生成器

今日内容

异常常见类型

NameError
IndentationError
SyntaxError
KeyError
SyntaxError

异常处理语法结构

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/BaseException
    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.断言
   name = 'jason'
   assert isinstance (name,str) #断言name是不是字符串
   print('哈哈哈哈')#断言不成功 那接下来的代码都不执行
2.主动抛异常
   name = 'jason'   
   if name == 'jason':     #如果名字是jason 报异常 
       raise exception ('不行')
   else:                  #不是jason 正常走
     print('正常走')

异常处理实战应用

1.异常处理能少用就少用
2.被try检测的代码能尽量少就尽量少
3.只有当代码中出现了 无法控制的的情况才应该考虑使用
   eg:使用手机访问网络
       编写网络爬虫程序数据请求 断网
    l1 = [11,22,33,44,55,66]
    list =l1.__iter__()
    while True:
        try:
            print(list.__next__())
        except StopIteration as e :
            break

生成器对象

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

yield冷门用法

def eat (name,food=None):
    print(f'{name}准备用餐')
    while True:
        food = yield
        print(f'{name}正在吃{food}')
res = eat('jason')
res.__next__()
res.send('汉堡')#将括号内的数据传给yield前面的变量名 再自动调用__next__
res.send('薯条')

生成器表达式

就是生成器的简化写法
l1 = (i+1 for i in range (200))
print (l1)

posted @ 2022-10-17 19:41  李李大冒险  阅读(25)  评论(0编辑  收藏  举报
  1. 1 不可撤销
  2. 2 小年兽 程嘉敏
  3. 3 迷人的危险3 FAFA
  4. 4 山楂树之恋 程佳佳
  5. 5 summertime cinnamons / evening cinema
  6. 6 不谓侠(Cover 萧忆情Alex) CRITTY
  7. 7 神武醉相思(翻自 优我女团) 双笙(陈元汐)
  8. 8 空山新雨后 音阙诗听 / 锦零
  9. 9 Wonderful U (Demo Version) AGA
  10. 10 广寒宫 丸子呦
  11. 11 陪我看日出 回音哥
  12. 12 春夏秋冬的你 王宇良
  13. 13 世界が终わるまでは… WANDS
  14. 14 多想在平庸的生活拥抱你 隔壁老樊
  15. 15 千禧 徐秉龙
  16. 16 我的一个道姑朋友 双笙(陈元汐)
  17. 17 大鱼 (Cover 周深) 双笙(陈元汐)
  18. 18 霜雪千年(Cover 洛天依 / 乐正绫) 双笙(陈元汐) / 封茗囧菌
  19. 19 云烟成雨(翻自 房东的猫) 周玥
  20. 20 情深深雨濛濛 杨胖雨
  21. 21 Five Hundred Miles Justin Timberlake / Carey Mulligan / Stark Sands
  22. 22 斑马斑马 房东的猫
  23. 23 See You Again Wiz Khalifa / Charlie Puth
  24. 24 Faded Alan Walker
  25. 25 Natural J.Fla
  26. 26 New Soul Vox Angeli
  27. 27 ハレハレヤ(朗朗晴天)(翻自 v flower) 猫瑾
  28. 28 像鱼 王贰浪
  29. 29 Bye Bye Bye Lovestoned
  30. 30 Blame You 眠 / Lopu$
  31. 31 Believer J.Fla
  32. 32 书信 戴羽彤
  33. 33 柴 鱼 の c a l l i n g【已售】 幸子小姐拜托了
  34. 34 夜空中最亮的星(翻自 逃跑计划) 戴羽彤
  35. 35 慢慢喜欢你 LIve版 戴羽彤
  36. 36 病变 戴羽彤
  37. 37 那女孩对我说 (完整版) Uu
  38. 38 绿色 陈雪凝
  39. 39 月牙湾 LIve版 戴羽彤
像鱼 - 王贰浪
00:00 / 04:45
An audio error has occurred, player will skip forward in 2 seconds.

作词 : 周有才

作曲 : 周有才

这是一首简单的歌

没有什么独特

试着代入我的心事

它那么幼稚

像个顽皮的孩子

多么可笑的心事

只剩我还在坚持

谁能看透我的眼睛

让我能够不再失明

我要记住你的样子

像鱼记住水的拥抱

像云在天空中停靠

夜晚的来到

也不会忘了阳光的温暖

我要忘了你的样子

像鱼忘了海的味道

放下所有梦和烦恼

却放不下回忆的乞讨

多么可笑的心事

只剩我还在坚持

谁能看透我的眼睛

让我能够不再失明

记住你的样子

像鱼记住水的拥抱

像云在天空中停靠

夜晚的来到

也不会忘了阳光的温暖

我要忘了你的样子

像鱼忘了海的味道

放下所有梦和烦恼

却放不下回忆的乞讨

只剩自己就好