Python 学习Task9!

mac2024-05-14  25

else语句

while … else

当 while 循环正常执行完的情况下,执行 else 输出; 当 while 循环中执行了跳出循环的语句,比如 break,将不执行 else 代码块的内容;

#!/usr/bin/env python3 # -*- coding:utf-8 -*- def showMaxFactor(num): count = num // 2 while count > 1: if num % count == 0: print("%d的最大约数是%d" % (num,count)) break count -= 1 else: print("%d是一个质数!" % num) num = int(input("请输入一个大于1的整数: ")) showMaxFactor(num)

结果: 请输入一个大于1的整数: 9 9的最大约数是3

for … else

for正常执行完,else也会跟着执行。for没有正常执行完,中间异常退出,则else也不会执行

for i in range(3): print(i) else: print('hello world')

结果:

0 1 2 hello world

try …. except … else

格式: try: 语句t except 错误码 as e: 语句1 except 错误码 as e: 语句2 ………… #可有多个 else: #可有可无 语句3 作用:用来检测try语句块中的错误,从而让except语句捕获错误信息并处理 逻辑:当程序执行到try-except-else语句时 1:如果当try“语句t”执行出现错误,会匹配第一个错误码,如果匹配到就执行对应"语句" 2:如果当try"语句t"执行出现错误,没有匹配的异常,错误将会被提交到上一层的try语句,或者到程序的最上层 3:如果当try“语句t”执行没有出现错误,执行else语句下的语句3(前提是存在else)

try : print(int(input("请输入一个数:")) % 2) except(ValueError ): print("你输入的不是一个数字,请输入一个数字") else: print("##展示else的用法") #结果: 请输入一个数:a 你输入的不是一个数字,请输入一个数字 #结果: 请输入一个数:8 0 ##展示else的用法

with 语句

当with语句执行时,便执行上下文表达式(context_expr)来获得一个上下文管理器,上下文管理器的职责是提供一个上下文对象,用于在with语句块中处理细节:

一旦获得了上下文对象,就会调用它的__enter__()方法,将完成with语句块执行前的所有准备工作,如果with语句后面跟了as语句,则用__enter__()方法的返回值来赋值;

当with语句块结束时,无论是正常结束,还是由于异常,都会调用上下文对象的__exit__()方法,exit()方法有3个参数,如果with语句正常结束,三个参数全部都是 None;如果发生异常,三个参数的值分别等于调用sys.exc_info()函数返回的三个值:类型(异常类)、值(异常实例)和跟踪记录(traceback),相应的跟踪记录对象。

因为上下文管理器主要作用于共享资源,enter()和__exit__()方法干的基本是需要分配和释放资源的低层次工作,

比如:数据库连接、锁分配、信号量加/减、状态管理、文件打开/关闭、异常处理等。

class A: def __enter__(self): print('__enter__() is called') def __exit__(self, e_t, e_v, t_b): print('__exit__() is called') with A() as a: print('got instance') #结果: __enter__() is called got instance __exit__() is called

继续努力!

最新回复(0)