1.
名称空间:任何可访问的变量必须在名称空间里列出。访问变量需要由解释器进行搜索,如果请求的名字没有在任何名称空间里找到,那么将会生成一个NameError异常。
2.
try-except语句检测和处理异常,你可以添加一个可选的else子句处理没有检测到异常的时执行的代码。
try语句块中异常发生点后的剩余语句永远不会到达。
3.
with语句的目的在于从流程图中把try,except,finally关键字和资源分配释放代码统统去掉。仅能支持上下文管理协议的对象。这意味着只有内建了“上下文管理”的对象可以和with一起工作。
with open('/etc/passwd','r') as f:
for eachLine in f:
#...do
打开一个文件,如果一切正常,把文件对象赋值给f。然后用迭代器遍历文件中的每一行,当完成时,关闭文件。无论在这一段代码的开始,中间,还是结束时发生异常,会执行清理的代码,此外文件仍会被自动的关闭。
上下文管理器主要作用于共享资源,可以想象到__enter__和__exit__方法基本是干的需要分配和释放资源的低层次工作,比如:
数据库连接,锁分配,信号量加减,状态管理,打开/关闭文件,异常处理等待
4.
Python提供了一种机制让程序员明确的触发异常:这就是raise语句。