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

  • 相关阅读:
    libxml2 使用教程【转】
    c++实现Xml和json互转【转】
    C++中JSON的使用详解【转】
    Libxml2函数及使用方法概述【转】
    首个threejs项目-前端填坑指南【转】
    如何使用chrome自带的Javascript调试工具 【转】
    require.js 最佳实践【转】
    Cesium中导入三维模型方法(dae到glft/bgltf) 【转】
    华为ap3010DN-V2刷出胖AP并配置接入POE交换机实现上网
    k8s cronjob设置作业失败后退出不重复执行
  • 原文地址:https://www.cnblogs.com/pengpengzhang/p/8687113.html
Copyright © 2011-2022 走看看