Day13模块和异常捕获

Day13模块和异常捕获

一.生成器

  1. 什么是生成器
  • 容器(是一种可以创建多个数据的容器),生成器中保存的是创建数据的方法,而不是数据本身。
  • 特点
    • a.打印生成器无法查看元素;
    • b.不能通过len统计元素的个数;
    • c.如果需要生成器中的数据,必须将数据取出,而且取一个就少一个
  • 生成器获取元素的方法和迭代器获取元素的方式一模一样
  1. 怎么创建生成器
  • 调用带有yield关键字的函数,就可以得到一个生成器。

    def func1():
        print('hello')
        yield
        return 100
    
    result = func1()
    print(f'result:{result}')
    
  1. 怎么控制生成器中元素的个数和元素的值
  • 执行常见生成器的函数的函数体的时候,会遇到几次yield,对应的生成器就可以创建几个数据,每次遇到yield,yield后面的值就是能创建出来的数据。
def func3(n):
    yield 100
    if n % 2 == 0:
        yield 200
    yield 300
    
gen3 = func3(3)
print(gen3)
print(list(gen3))       # [100, 300]
# print(next(gen3))     # 报错!        

二.模块

  1. 什么是模块
    python中一个py文件就是模块。
  2. 怎么在一个模块中使用另外一个模块中的内容
  • 使用前提:如果想要在一个模块中使用另外一个模块中的内容,被使用的模块的模块名必须符合变量名的要求

  • 导入模块

    • import 模块名 - 导入指定模块,导入后可以通过’模块名.xxx’的方式使用这个模块中所有的内容

      import test
      
      print(test.a)
      print(test.name)
      test.f_test1()
      
    • from 模块名 import 内容1,内容2,… - 导入指定模块,导入后可以直接使用指定内容 (指定内容就是跟在import后面的内容)

      from test import a, f_test1
      
      print(a)
      f_test1()
      # print(name)       # 报错!
      
    • **from 模块名 import *** - 导入指定模块,导入后可以直接使用模块中所有内容

      from test import *
      
      print(a)
      print(name)
      f_test1()
      
    • import 模块名 as 新模块名 - 导入模块后对应的模块进行重命名,新模块名.xxx

      import test as t1
      
      test = 1000
      
      print(t1.a)
      print(t1.name)
      t1.f_test1()
      
      print(test)
      
    • from 模块名 import 内容1 as 新内容1 - 对导入的内容重命名

      from test import name as t_name, a
      
      name = '小花'
      
      print(name)
      print(t_name)
      print(a)
      

三.包

  1. 什么是包
  2. 怎么使用包或者文件夹中的模块中的内容
  • import 包名 - (只适用包)导入指定的包,导入后可以通过‘包名.xxx’去使用__int__.py中所有的内容

    import files2
    print(files2.a)
    print(files2.b)
    print(files2.a+files2.b)
    
  • from 包名 import 模块1,模块2,… - 导入指定包中指定的模块,导入后可以通过’模块名.xxx’使用指定模块名中的内容

    from files2 import text1,text3
    print(text1.xcv)
    print(text3.name)
    
  • from 包名 import 内容1,内容2,… - (只适用于包)导入指定宝中__int__.py文件中的指定内容

    from files2 import a,b,nums
    print(a+b)
    print(nums)
    
  • import 包名.模块名

    import files2.text3
    print(files2.text3.name)
    
    import files2.text3 as t
    print(t.name)
    
  • from 包名.模块名 import 内容1,内容2,…

    from files2.text1 import xcv
    print(xcv)
    

四.异常捕获

  1. 异常 - 程序中的错误
  • 程序出现异常(报错)会直接让程序结束运行(在那个位置出现异常,程序就会在那个地方结束)

    print('++++++++')
    print('abc'[4])      # 报错 后面的代码就执行不了
    print('--------')
    print('========')
    
  1. 异常捕获 - 让程序在出现异常的时候程序不结束,还可以接着往后执行
  • 语法结构1:- 捕获所有异常
    try:
    代码段1(需要捕获的异常代码)
    except:
    代码段2(出现异常后会执行的代码)
    finally:
    代码段3(最后无论如何都会执行的代码)

    执行过程:先执行代码段1,执行代码段1的时候如果没有出现异常,就不执行代码段2;如果出现异常,程序不报错并且马上执行代码段2

    try:
        age = int(input('请输入年龄:'))
        print(age)
    except:
        print('年龄输入有误!')
    
  • 语法结构2: - 捕获指定类型的异常
    try:
    代码段1(需要捕获的异常代码)
    except 异常类型:
    代码段2(出现异常后会执行的代码)
    finally:
    代码段3

    try:
        print('abc'[4])
    except KeyError:
        print('出错!')
    finally:
        print('遗书')
    
  • 语法结构3: - 同时捕获多种异常类型
    try:
    代码段1(需要捕获的异常代码)
    except (异常类型1,异常类型2,…):
    代码段2(出现异常后会执行的代码)
    finally
    代码段3

  • 语法结构4: - 同时捕获多种异常类型(异常类型不同,处理的结果不一样)
    try:
    代码段1
    except 异常类型1:
    代码段11
    except (异常类型2,异常类型22,…):
    代码段22
    except 异常类型3:
    代码段33

    finally:
    代码段n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值