匿名函数 模块
匿名函数
""" 什么是匿名函数? 匿名函数就是没有名字的函数 为何要用匿名函数? 用于临时使用一次的场景 如何定义匿名函数? """
# 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中模块被导入一次之后,就不会重新导入,只会在第一次导入时执行模块内代码 在我们的项目中应该尽量避免出现循环/嵌套导入,如果出现多个模块都需要共享的数据,可以将共享的数据集中存放到某一个地方 在程序出现了循环/嵌套导入后的异常分析、解决方法有以下两种 方法一:导入语句放到最后 方法二:导入语句放到函数中
浙公网安备 33010602011771号