这里只是做一个简单的记录,大佬绕道
这python当中,else除了可以搭配if使用外,也可以搭配循环和异常捕获进行使用
1、else搭配循环使用
# else搭配循环使用
def showMaxFactor(num):
count = num // 2 # 整除
while count > 1:
if num % count == 0:
print('%d的最大公约数是%d' %(num, count))
break # 直接跳出循环
count -= 1
# else搭配while使用
else:
print('%d是素数!' % num)
num = int(input('请输入一个整数:'))
showMaxFactor(num)
运行结果
这里采用了一个循环求最大公约数的例子来说明,else可以搭配while循环使用(当然也可以搭配其他循环)。如果循环内的内容全部执行,没有中途跳出的话,则执行else当中的内容;如果中途通过break跳出程序,则else当中的内容将不会被执行。
2、else搭配异常捕获使用
出现报错,else未被执行
# else搭配异常捕获使用
try:
int('abc') # 类型错误
except ValueError as reason:
print('出错了!错误原因是' + str(reason))
# else搭配异常捕获使用
else:
print('没有出错')
正常出现异常然后进行报错
程序未出现报错,进入else
# else搭配异常捕获使用
try:
int('123') # 类型未出错
print(int('123'))
except ValueError as reason:
print('出错了!错误原因是' + str(reason))
# else搭配异常捕获使用
else:
print('没有出错')
这里进入else
这里也是引用小甲鱼的一个ppt图片,很生动形象
ps:这里博主想多说一句,python的对齐格式其实很能说明问题,在c语言当中其实else往往对应最近的一个if,一定是一一对应的,但是在python中,可以直接看对齐的格式,这里的例子当中else是和while对齐,可以帮助我们理清逻辑。
3、with语句
with 提供了一种机制,可以在进入和退出(无论正常退出,还是异常退出)某个语句块时,自动执行自定义的代码。对这个机制的封装,叫做上下文管理器。with 是对上下文管理器的调用。with 通常用来处理访问资源后,对资源的释放工作。
有一些任务,可能事先需要设置,事后做清理工作,类似我们之前打开文件的操作,在出现异常后,我们通过finally中执行关闭文件的语句进行关闭文件,但是如果这里采用了with,系统会在我们没有调用文件的时候自动进行关闭文件的操作。
用之前的方法打开一个不存在的文件,然后进行关闭文件
# 普通用法
try:
file = open('data.txt', 'w') # 试图打开一个不存在的文件
for eachLine in file:
print(eachLine)
except OSError as reason:
print('出现错误!原因是' + str(reason))
finally:
file.close()
运行结果
这里的data.txt是一个不存在的文件,通过close试图去关闭一个不存在的文件,是会存在问题的
采用with的方式
# with用法
try:
with open('data.txt', 'w') as file:
for eachLine in file:
print(eachLine)
except OSError as reason:
print('出现错误!原因是' + str(reason))
# 不需要finally
当系统检查到这个文件没有被用到后会执行关闭文件操作
另外其实关于with还有挺多说明的,这里引入一个链接,以后深入学习后再进行研究python中with用法