其他语言中else只可以和if进行组合,也就是我们常见的if...else,但是python为else赋予了新的声明。它可以和while 、for 、try一起串联使用。
下面我们介绍和while串联使用时的效果。
count=0 while count>12: if (11>0): print("成立") break count+=1 else: print('不成立') #当while条件不成立,直接跳到该处输出
for 循环和while用法一样的
def forelse(): c = [1,2] for i in c: print(i) else: print("输出") #当for循环结束会输出该语句
try 的用法
def tryelse(): try: sum = 1+1 except TypeError as reason: print("报错") else: print("到我这里了") #当try块中的语句正常执行完毕会执行该方法。
with ...:用法
# 第一种写法 def withas(): try: f = open("文字.txt") print(f.read()) f.close() except OSError as reason: print("读取错误") else: print("完成") # 第二种写法 with,一定不要忘记 : 哦 def withas2(): try: with open("文字.txt") as f: print(f.read()) f.close() except OSError as reason: print("读取错误") else: print("完成")
为什么会用到with,是因为有的时候我们可能在使用open(file)打开一个文件的时候,可能这个文件并不存在,那么这个时候就会报错,而我们可能会将这种方法卸载一个try except finally这样的语句里,并且在finally里边可能添加了f.close()这样的语句,但是我们这个时候并没有打开一个f的文件,因为这个文件并不存在,所以没有必要关闭这个文件。这时候我们就用到了with。
错误代码展示:
def withas1(): try: f = open("文字1.txt") #该文件不存在哦 print(f.read()) except OSError as reason: print("读取错误") finally: f.close() #--------------错误输出 读取错误 Traceback (most recent call last): File "E:/python/day-2/whileelse.py", line 46, in <module> withas1() File "E:/python/day-2/whileelse.py", line 44, in withas1 f.close() UnboundLocalError: local variable 'f' referenced before assignment >>>
从错误输出我们就可以看到,报的错误是局部变量错误,说的就是f并不存在,也就是没有打开这个文件。