else else的用法主要体现在与if的用法,与循环语句的用法和与try的用法 1.if语句
if judgment: statement1 else: statement2 statement3判断judgment是否为true,若为true则执行statement1,执行完毕后执行statement3; 若judgment为false,则执行statement2,执行完毕后执行statement3 2.与循环语句的配合使用 循环语句无外乎与while和与for循环了 循环中有可能有break,若循环是正常循环完毕(即不是通过break跳出循环的),则执行else后面的语句 若循环是由于执行了break语句而跳出的循环,则不执行else中的语句,直接执行后面的语句 3.与try的使用
try: statement1 except: statement2 else: statement3执行statement1,若出现SyntaxError,则执行statement2; 若没有SyntaxError,执行完statement1后执行statement3. with with最常用的用法是和文件的打开一起使用,由于打开文件后一定会关闭文件,为了避免忘掉关掉从而导致内容流失。
with的工作原理
紧跟with后面的语句会被求值,返回对象的__enter__()方法被调用,这个方法的返回值将被赋值给as关键字后面的变量,当with后面的代码块全部被执行完之后,将调用前面返回对象的__exit__()方法。
with语句最关键的地方在于被求值对象必须有__enter__()和__exit__()这两个方法,那我们就可以通过自己实现这两方法来自定义with语句处理异常。 opened中的__enter__() 返回的是自身的引用,这个引用可以赋值给 as 子句中的fp变量;
返回值的类型可以根据实际需要设置为不同的类型,不必是上下文管理器对象本身。
exit() 方法中对变量exc_trackback进行检测,如果不为 None,表示发生了异常,返回 False 表示需要由外部代码逻辑对异常进行处理;
如果没有发生异常,缺省的返回值为 None,在布尔环境中也是被看做 False,但是由于没有异常发生,exit() 的三个参数都为 None,上下文管理代码可以检测这种情况,做正常处理。exit()方法的3个参数,分别代表异常的类型、值、以及堆栈信息。