作者回复: 考驾照为什么要了解发动机的原理呢? 先学会把车发动、开的走、停的下才是这个阶段最需要关注的事情。 会开车了还要不要了解发动机的原理呢? 因为要了解不同的发动机的不同特性。 demo掺杂了其他的功能就会给第一次接触这个功能的人带来技术债,当理解了这个知识的的why和what的时候,才来到第二步,利用搜索引擎文档社区这些工具把以前的知识连接起来。
作者回复: 提示信息太过简略,没有起到学习的辅助作用,反倒给学习增加了难度;理解了,后续内容会在这方面做优化的,感谢硕杨同学。
作者回复: with 关键字 用于对try except finally 的优化,让代码更加美观,书写更简单。例如: f=open('file.txt','r') try: r=f.read() except: pass finally: f.close() 可以改写成 with open('file.txt','r') as f: r=f.read()
作者回复: with的本质是try except, 需要处理多个异常的时候可以使用多个except,看看从这个思路入手能不能帮你理解这个概念
作者回复: 首先 exit魔术方法 就是finally要做的事情,with语句实现了而已,如果自己需要累死功能实现__exit__()就好 使用with open方式 打开的文件不用再去处理文件异常,其他的异常还是要处理的
作者回复: 处理异常栈的模块是traceback模块, 默认是在抛出异常的第一行打印的,这里不存在先后顺序,一定是第一行输出的
作者回复: 1 在A类中实现 __enter__()和__exit__() ,支持with 2 在A类中实现__call__() 支持调用 这样就可以使用 with A() as a: pass 形式了
作者回复: 1 如果__enter__没有吧self返回回去,w就是一个空类型, 不写return也会返回NULL 2 函数返回什么类型,什么值要编写函数的人确定,标准的写法都会有help() ,即用help(函数/类)可以查看定时的时候的帮助
作者回复: def __exit__(self, exc_type, exc_value, traceback): return True exit带了4个参数,通过exc_type 来判断要捕获的异常,如: if exc_type == IndexError: print(exc_value)
作者回复: 完全可以用with实现,前面是为了给大家讲解with实现的底层原理,比如with open() 要比自己写异常捕获优雅