Skip to content

Latest commit

 

History

History
233 lines (178 loc) · 5.84 KB

053-1072466-try语句的完全体_最终_finally.sy.md

File metadata and controls

233 lines (178 loc) · 5.84 KB
show version enable_checker
step
1.0
true

try的完全体

回忆上次内容

  • 我们了解了 try 的完全体
    • try
      • 尝试运行
    • except
      • 发现异常时运行的代码块
    • else
      • 没有发现异常时运行的代码块
  • 注意!
    • 都要有英文半角的冒号
    • 都要通过 4 个字符的缩进控制范围

图片描述

  • 最后还有个finally
    • 这个finally如何理解呢?

finally

  • finally
    • 是一个收尾的语句
try:
    i = int("123")
    j = i / 0
except ValueError:
    print(ValueError)
except NameError:
    print(NameError)
except Exception as e:
    print(e)
else:
    print("Nothing Wrong")
finally:
    print("At Last...finally...")
  • try 之后分支
    • 要么 捕获到了异常
      • 执行 except 子句
    • 要么 没有捕获到异常
      • 执行 else 子句
  • 无论是except 还是 else
    • 最后 总要执行finally

图片描述

finally的帮助

  • 如果执行过程中
    • 还有任何的异常
      • 但是这个异常没有被处理
      • 那么就把这个异常先存着
      • 等待finally执行之后
      • 再抛出这个异常
    • 如果遇到return break continue之类强制跳转语句
      • 这个异常就被忽略了

图片描述

  • 这如何理解?

最后再抛异常

try:
    a
except ValueError:
    print(ValueError)
else:
    print("Nothing Wrong")
finally:
    print("finally----------")
  • 运行结果

图片描述

  • 错误所有子句都处理不来
    • 跳过else
    • 进入finally
    • 最后再把错误直接抛给系统
  • 再看一个例子

理解finally

  • try里面第二行出现错误
    • ValueError
    • 不执行后面的d = i / 0
    • 跳到except

图片描述

  • except中
    • 没有ValueError的处理办法
    • ValueError没有被处理
    • 于是ValueError就存着
  • 由于出现了Error
    • 已经进入了except
    • 无法进入else
  • 最后进入finally执行
    • 输出了At Last
  • 执行外finally语句块
    • 才把这个ValueError最后抛出来

图片描述

  • 这是finally的执行逻辑
  • 就像python语言
    • 有一个主要的决策者Guido一样

仁慈的独裁者BDFL

  • 彻底的仁慈
    • 意味着 没有主见和行动力下降
  • 彻底的独裁
    • 则会 失去广泛的帮助

图片描述

  • 仁慈和独裁
    • 像是矛盾的两面
  • 但是
    • Guido却很好地平衡了两者
  • 除了Guido之外
    • 很多开源项目的老大
      • 也有类似的称号

图片描述

  • Guido是如何成长的呢?

扩展视野

  • Guido 利用假期去美国做一些WorkShop实践课程
    • 美国硅谷是当时it的潮头

图片描述

  • 很早接触到了
    • 互联网的发展趋势

互联网

  • Guido做了一个浏览器grail

图片描述

  • 水瓶座出生的Guido
    • 注重社群的力量

水瓶座时代

  • 2023年冥王星将从摩羯座进入水瓶座
    • 将迎来20年左右的转折窗口
    • 我们人类社会开始彻底地颠覆和转变

图片描述

  • 地球也迎来了水瓶座时代
    1. 个人更着重于自身内在精神灵性方面的成长,不再执着于外在物质欲望的享受
    2. 水瓶座象征的是集体、群众和社区,意味着乐于喜悦服务他人,我们的人际关系、生活方式将发生重大变化
    3. 人类的集体意识会逐渐提升,可以更容易连结智慧本源以及更高维度的世界
    4. 科学技术、人道主义及公正平等,模式创新、理想社会将会是全球议题中的重中之重
    5. 地球环境趋于恶化,气候多变。全球变暖,能源安全变得极为重要,人类应用高科技对空气、水以及土壤进一步改造会变得困难,并且加剧了全球环境恶化的自然过程

网络集聚

  • 网络的能量越来大
    • 这为python的发展做了很好的准备
    • 媒介
      • 从报纸、杂志、电视
      • 发展到邮件、论坛和浏览器

图片描述

  • 有人 就有 应用
    • 有应用 就更有 人
    • 于是会形成 正反馈
    • 有了社区 就会有更多的人 加入社区
  • 其实学编程 也是一样
    • 越熟练 就会越自信
    • 越自信 也就会越熟练

Guido 作为 finally

  • 人很多 之后
    • 众说纷纭
    • 往往需要一个最终的决策

图片描述

  • finally
    • Guido 完成决策
      • 决策并不是为了显示
        • 自己权威的位置
        • 所有者 的权限
      • 那样会 让开发者远离 python项目
  • 决策是因为 Guido 比任何人都了解项目
    • 对于决策 都能做出合理的解释

总结

  • 我们了解了 try 的完全体
    • try
      • 尝试运行
    • except
      • 发现异常时运行的代码块
    • else
      • 没有发现异常时运行的代码块
    • finally
      • 无论是否发现异常最终都要运行的代码块

图片描述

  • 上图就是python连接数据库的类库psycopg中
    • try的具体应用
      • 如果成功就提交commit
      • 如果失败就回滚rollback
      • 无论成功失败都要断开连接
  • python是如何引入外部类库的呢?🤔
  • 我们下次再说!👋