zoukankan      html  css  js  c++  java
  • 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并不存在,也就是没有打开这个文件。

  • 相关阅读:
    linux kernel内存碎片防治技术
    内核线程
    Linux内核高端内存
    Lcd(一)显示原理
    LSB和MSB
    图解slub
    数据库小试题2
    编写函数获取上月的最后一天
    php中的static静态变量
    mysql小试题
  • 原文地址:https://www.cnblogs.com/pengpengzhang/p/8687113.html
Copyright © 2011-2022 走看看