python,中使用while...else 和 for...else 还有try...else,另外就是运用with关键字

时间:2022-12-13 11:36:57

  其他语言中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并不存在,也就是没有打开这个文件。