作者回复: 考驾照为什么要了解发动机的原理呢?
先学会把车发动、开的走、停的下才是这个阶段最需要关注的事情。
会开车了还要不要了解发动机的原理呢?
因为要了解不同的发动机的不同特性。
demo掺杂了其他的功能就会给第一次接触这个功能的人带来技术债,当理解了这个知识的的why和what的时候,才来到第二步,利用搜索引擎文档社区这些工具把以前的知识连接起来。
作者回复: 提示信息太过简略,没有起到学习的辅助作用,反倒给学习增加了难度;理解了,后续内容会在这方面做优化的,感谢硕杨同学。
作者回复: 1 在A类中实现 __enter__()和__exit__() ,支持with
2 在A类中实现__call__() 支持调用
这样就可以使用
with A() as a:
pass
形式了
作者回复: 首先 exit魔术方法 就是finally要做的事情,with语句实现了而已,如果自己需要累死功能实现__exit__()就好
使用with open方式 打开的文件不用再去处理文件异常,其他的异常还是要处理的
作者回复: 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() 要比自己写异常捕获优雅
作者回复: with的本质是try except, 需要处理多个异常的时候可以使用多个except,看看从这个思路入手能不能帮你理解这个概念
作者回复: 离开了with语句块文件就关闭了
作者回复: 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()