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


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

  • 相关阅读:
    sizeof()和 strlen()的区别 --- 个人笔记
    MySQL 生成自增流水号
    sql 逗号分隔列转行
    【转】.NET中lock的使用方法及注意事项
    【转】在一个SQL Server表中一行的多个列找出最大值
    使用 PIVOT 和 UNPIVOT
    List<T>转DataTable
    C# 分数计算类(加减乘除)
    【转】mysql执行计划介绍
    【转】SQL Server 存储:理解IAM 页
  • 原文地址:https://www.cnblogs.com/pengpengzhang/p/8687113.html
Copyright © 2020-2023  润新知