Day 13 模块与包

Day 13 模块与包

几点总结

  • lambda 匿名函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数

  • 匿名函数在调用时,需要给形参传入实参

    print((lambda i, j: i + j)(2,3))  #传入指定参数
    
    print((lambda i, j: i + j)(2,3))
    sum_1 = lambda i, j: i + j
    list1 = [sum_1(k,m) for k in range(1,5) for m in range(2,6)]  # 每次只能给匿名函数传入一次参数,只执行一次
    print(list1)
    
  • 字典可以用来保存一个对象的两种属性,规定排序规则

  • sorted(序列,lambda 变量(代表序列中的每一个元素) : 返回值(将变量中的元素进行加工处理,使之按照某种方式进行排序)

    """
    map(函数,序列,序列)
    
    函数的要求:
    有且只两个参数,,代表后面序列中的每个元素
    有一个返回值,返回值就是新序列中的元素
    """
    

生成器

"""
1)
生成器是一种容器,(是一种可以创建多个数据的容器),生成器中
保存的是创建数据的方法,而不是数据本身.(可以下蛋的母鸡)
2) 特点
打印生成器,无法查看元素;
不能通过len()统计元素的个数;
如果需要生成器中的数据,必须将数据取出,而且也是取一个就少一个
生成器获取元素的方式和迭代器获取元素的方式一样
内存节省(只计算母鸡的内存)
"""
  • 创建生成器

    """
    调用带有yield关键字的函数,就可以得到一个生成器
    调用函数
    执行函数体
    输出返回值
    """
    
    def func1():   # 用函数创建生成器
        print('hello')
        yield
        return 100
    
    
    result = func1()
    print(f'result:{result}')  #result:<generator object func1 at 0x0000025B39EF6510>
    
  • 获取生成器中的元素

    """
    怎么控制生成器 中元素的个数和元素的值
    执行创建生成器的函数体的时候,会遇见几次yoild,对用的生成器就可以创建
    多少个数据,每次遇到 yeild,yeild后面的值就是创建出来的数据
    """
    def func2():
        print('+++++')
        yield 100
        print('------')
        yield 200
        print('=======')
        yield 300
    
    
    gen2 = func2() 
    print(gen2)   # #<generator object func2 at 0x0000025B3A00BF20>
    print('next:', next(gen2))
    print('next:', next(gen2))
    print('next:', next(gen2))
    # print('next:', next(gen2))        # 报错!
    
    def func2():
        for i in range(100):
            print('+++++')
            yield 100
            print('------')
            yield 200
            print('=======')
            yield 300
    
    
    gen2 = func2()
    print(gen2)
    print("---------------------------------------------是非对错---------------------------------------")
    print('next:', next(gen2))# 100
    print('next:', next(gen2))# 200
    print('next:', next(gen2))# 300
    print('next:', next(gen2))# 100
    print('next:', next(gen2))# 200
    print('next:', next(gen2))# 300
    print('next:', next(gen2))# 100   yield 相当于  return
    

模块

py文件 就是一个模块
怎么在一个模块中使用另外一个模块中的内容
在别的文件中的代码不能直接用
使用前提:
被使用的内容所在的模块的模块名 必须符合变量名的要求
import  + 模块名 导入指定模块  ,通过模块名.xxx来使用模块中的代码
模块必须在同一个项目里面
from 模块名  import  内容1 , 内容2     导入模块的指定内容,直接使用

from 模块名 import *     导入指定模块可以直接使用模块中所有内容

import 模块名 as 新模块名    导入指定模块后对模块进行重命名

from 模块名 import 内容1 as 新1, 内容2 as 新2   对导入的内容进行重命名

  • 包含__init__.py文件的文件夹就是包

  • 使用包中的模块

    """
    使用包中的模块
    import 包名   (只适用于包,导入后可以通过    包名.xxxx   使用 __int__.py   文件中的内容)
    
    from 包名  import 模块1,模块2,模块3,,,     导入指定的包或者文件夹中的模块,   模块名.xxx   使用模块中的东西
    
    from 包名  import  内容1,内容2,,,   只适用于包,调用__int__.py 中的内容
    
    import 包名.模块      适用于包和文件夹
    
    import  包名.模块名  as  新名字     适用于包和文件夹
    
    from 包名.模块名   import   内容1  内容2
    """
    

异常捕获

  • 异常 - 程序出现异常(报错)

  • 异常捕获 - 让程序在出现异常的时候程序不结束,还可以接着往后执行

    """
    try
    语法结构:
     try: 
        代码段1
    except:
        代码段2
        
    """
    
    """
    语法结构2:
    try:
        代码段1()
    except 异常类型:
        代码段2
    finally:                      (每种都可以加)
        代码段3                  (无论如何都会执行的代码,代码段1,2   执行情况如何  代码段3都会执行,,,,用来写遗书的)                  
                                      (用来交代后事)
                                      (可以用来保存闪退时候,对数据的保存)
    """
    
    """
    语法结构3
    try:
        代码段1()
    except (异常类型1,异常类型2):
        代码段2
    """
    
    """
    语法结构2:
    try:
        代码段1()
    except 异常类型1:
        代码段21
    except 异常类型2:
        代码段22
    except (异常类型3,异常类型4):
        代码段23 
    """
    try:
        print("abd"[4])
    except IndexError:
        print("出错")
    finally:
        print("遗书")
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值