第三周 Day 3 —— Python模块和包

第三周 Day 3 —— Python模块和包

一、 高阶函数

1.map —— 对序列中的元素进行变换或者合并
  1. 用法一:

    map(函数,序列) —— 将原序列中的元素,按照函数给定的标准转换成新的序列。

    函数的要求:a. 是一个函数

    ​ b. 有一个参数(指向后面的这个序列中的元素)

    ​ c. 需要一个返回值(返回值就是新序列中的元素)

    # 获取nums中所有元素的个位数,产生一个新的列表
    nums = [19, 78, 66, 51, 34, 98, 22]
    result = map(lambda item: item % 10, nums)
    print(list(result))            # [9, 8, 6, 1, 4, 8, 2]
    
  2. 用法二:

    map(函数, 序列1, 序列2)

    函数的要求:a. 是一个函数

    ​ b. 有两个参数(分别指向后面的两个序列中的元素)

    ​ c. 需要一个返回值(返回值就是新序列中的元素)

    # 产生一个新的序列,序列中的每个元素是math和chinese的分数的和
    math = [19, 23, 45, 65, 78]
    chinese = [48, 45, 68, 78, 56]
    result = map(lambda item1, item2: item1 + item2, math, chinese)
    print(list(result))             # [67, 68, 113, 143, 134]
    ###########################################################
    
    # 练习:将以下两个列表按照下面的要求转换字典: {'苹果': 1823, '小爱同学':22221, '耳机': 891, '天猫精灵': 78}
    names = ['苹果', '小爱同学', '耳机', '天猫精灵']
    nums = [1823, 22221, 891, 78]
    result = map(lambda item1, item2: (item1, item2), names, nums)
    print(dict(result))             # {'苹果': 1823, '小爱同学': 22221, '耳机': 891, '天猫精灵': 78}
    
2. reduce —— 按照指定规则对序列中的元素进行合并操作

​ 使用之前加模块:from functools import reduce

  1. 用法一

    reduece(函数, 序列, 初始值)

    函数的要求:

    a. 是个函数

    b. 有且只有两个参数(第一个参数第一次指向初始值,从第二次开始指向上一次的计算结果;第二个参数指向序列中的每一个元素)

    c. 有一个返回值(返回值决定合并规则)

    # 求所有元素的和
    nums = [19, 78, 66, 51, 34, 98, 22]
    result = reduce(lambda x, y: x + y, nums, 0)
    print(result)          # 368
    

    练习一:求所有的数的个位的和

    nums = [23, 34, 56, 67, 8]
    result = reduce(lambda x, y: x + y % 10, nums, 0)
    print(result)              # 28
    

    练习二:求所有的元素的数值和

    nums = [23, '78.9', 9, '10']
    result = reduce(lambda x, y: x + float(y), nums, 0)
    print(result)              # 120.9
    

    练习3:求所有数字的乘积

    nums = [23, 8.9, 'abc', True, '2']
    result = reduce(lambda x, y: x * (y if type(y) in [int, float] else 1), nums, 1)
    print(result)              # 204.70000000000002
    

二、模块

1. 什么是模块

​ 一个py文件就是一个模块。Python中可以在一个模块中去使用另一个模块(命名要规范)中所有的全局变量。

2. 导入模块
  1. 方法一

import 模块名 —— 导入指定模块,导入后需要通过模块名.xxx的形式去使用模块中的内容(就是模块中的全局变量)

  1. 方法二

from 模块名 import 变量名1, 变量名2, … —— 导入指定模块中的指定变量;导入后直接使用变量

  1. 重命名

import 模块名 as 新模块名 —— 给模块重命名,重命名后使用新的名字

from 模块名 import 变量名1 as 新变量名, 变量名2 as 新变量名2,… —— 导入的时候给指定变量重命名

  1. 通配符*

**from 模块名 import *** —— 导入指定模块中所有的全局变量

3. 导入模块的原理

​ 不管以什么样的方式导入模块,在导入模块的时候系统会自动进入被导入的模块,将模块中的代码全部执行一遍。

​ Python导入模块的时候会自动检测被导入的模块之前是否已经导入过,如果已经导入过就不会重复导入。

if __name__ == ‘__main__’:

这个if外面的代码才是会被其他模块执行的代码
这个if里面的代码不会被其他模块执行 ,只能被自己执行

三、包

1. 什么是包

​ 包就是用来管理多个模块的一种特殊的文件夹(包含有__init__.py文件的文件夹)。

2. 怎么使用包中的模块的内容
  1. 方法一

import 包名.模块名

使用:包名.模块名.内容

  1. 方法二

import 包名.模块名 as 新名字

使用:新名字.内容

  1. 方法三

from 包名 import 模块名

使用:模块名.内容

  1. 方法4

from 包名 import 内容

直接使用内容

即使在同一个包下调用另一个模块,也需要加包名。

3. __init__.py

​ 导入包的时候,__init__.py文件会先被执行。

  1. 批量导入包

    可以在__init__.py这写上导入包的代码,使用时直接import 包名就可以了。

  2. 提取高频使用的部分内容

    __init__.py中将常用的内容提取出来定义成全局变量,使用时直接from 包名 import 变量

  3. 封装通用功能

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值