匿名函数 模块

匿名函数

"""
什么是匿名函数?
匿名函数就是没有名字的函数

为何要用匿名函数?
用于临时使用一次的场景

如何定义匿名函数?

"""

# max

  salaries = {
  "axx": 30000000,
  "bgon": 3000,
  "zxx": 1000
  }

# print(max(salaries,key=f))
# print(max(salaries,key=lambda name:salaries[name]))
# print(min(salaries,key=lambda name:salaries[name]))
# print(sorted(salaries))
# print(sorted(salaries,key=lambda name:salaries[name]))

 

# names = ['lxx', "hxx", "wxx"]
# # res=[name+"_vip" for name in names]
# # res=(name+"_vip" for name in names)
#
# res = map(lambda name:name+"_vip",names)
# print(res)
# print(list(res))

 

# filter()
# names = ['lxx', "hxx_vip", "wxx_vip"]
# # res = [name for name in names if name.endswith('_vip')]
# # print(res)
#
#
# res=filter(lambda name:name.endswith('_vip'),names)
# print(res)
# print(list(res))

 

# reduce()
from functools import reduce

# res = reduce(lambda x, y: x + y, [1, 2, 3, 4],100)
res = reduce(lambda x, y: x + y, ["a", "b", "c", "d"], "xxx")
print(res)

面向过程编程

"""
1、面向过程编程思想
    过程就是流程,即先干什么再干什么后干什么
    基于该思想写程序就好比在设计一条条的流水线

    优点:复杂的问题流程化、进而简单化
    缺点:牵一发而动全身,扩展性差


"""

模块

自定义模块
1、一个py就是一个模块
2、包就是一个存放有__init__.py文件的文件夹,包的本质就是一个模块

三种来源:
1、自带的
内置
标准库
2、第三方的
pip3 install 第三方库

3、自定义的

 

# 首次导入模块发生了2件事:
# 1、会触发spam.py的运行,会产生一个模块的名称空间,用来存放模块运行过程中产生的名字
# 2、会在当前文件的名称空间中产生一个名字spam,该名字指向模块的名称空间

# 后续的导入直接引用之前已经产生的名称空间


# ======================import语法
# import spam
# spam.名字

# import spam as sm
# sm.名字

# import spam as sm, os as xxx, sys, re
# ======================from ... import ...语法

# from spam import *

模块搜索路径

模块的查找顺序是:内存中已经加载的模块->内置模块->sys.path路径中包含的模块
#模块的查找顺序
1、在第一次导入某个模块时(比如spam),会先检查该模块是否已经被加载到内存中(当前执行文件的名称空间对应的内存),如果有则直接引用
    ps:python解释器在启动时会自动加载一些模块到内存中,可以使用sys.modules查看
2、如果没有,解释器则会查找同名的内建模块
3、如果还没有找到就从sys.path给出的目录列表中依次寻找spam.py文件。
# from aaa.bbb.ccc import spam # 导入语句中出现的点,代表路径分隔符
#
# spam.money # 使用语句中出现的点,代表问某一个名称空间要名字

模块循环导入问题

模块循环/嵌套导入抛出异常的根本原因是由于在python中模块被导入一次之后,就不会重新导入,只会在第一次导入时执行模块内代码

在我们的项目中应该尽量避免出现循环/嵌套导入,如果出现多个模块都需要共享的数据,可以将共享的数据集中存放到某一个地方

在程序出现了循环/嵌套导入后的异常分析、解决方法有以下两种

方法一:导入语句放到最后
方法二:导入语句放到函数中

 

posted @ 2021-07-05 20:37  KengTou  阅读(145)  评论(0)    收藏  举报