匿名函数
1,什么是匿名函数?
匿名函数就是没有名字
2,为什么要用匿名函数
用于临时使用一次的场景
3,如何定义匿名函数
def foo(x,y)
return x + y
lambda
lambda x,y:x+y调用的两种方式
1,f = lambda x,y:x+y
printf(1,2)
2,res = (lambda x,y:x+y)(1,2)
print(res)
(lambda x,y:x+y)(1,2)
真的使用方式是和其他的函数搭配使用
max
salaries = {
'axx' : 30000000,
'bgon':3000,
'zxx':1000
}
def f(name):
return salaries[name]
print(max(salaries,key = f ))
print(max(salaries,key = lamdba name:salaries[name]))
print(min(salaries,key = lamdba name:salaries[name]))
print(sorted(salaries)
print(min(salaries,key = lamdba name:salaries[name]))
max:最大
min:最小
sorted:排序
map:映射
names = ['lxx','hxx','wxx']
res = [name+'_vip' for name in names]
res = map(lambda name:name + '_vip',names)
print(res)
print(list(res))
filter:过滤
names = ['lxx_vip','hxx','wxx_vip']
res = [name for name in names if name.endswith('vip')]
print(res)
filter(lambda name:name.endswith('_vip'),names)
reduce:
res = reducee(lambda x,y:x+y,['a','b','c','d'],'aaa')
print(res)
res = reduce(lambda x , y:x+y , [1,2,3],可以设置一个初始值)
面向过程编程思想
1,面向过 程编程思想
过程就是流程,即先干什么在干什么
基于该思想学程序就好比在设计一条条的流水线
优点:复杂的问题流程化、进而简单化
缺点:牵一发而动全身,扩张性差
模块
模块是一堆功能的集合体
自定义模块的两种格式:
1,一个py文件就是一个模块
2,包就是一个存有__init__.py文件的一个文件夹,包的本质就是一个模块
模块的三种来源:
1,自带的
内置的
标准库
2,第三方的库
pip3 install 第三方库
3,自定义的,减少代码冗余,提取对自己有用模块
前两种称之为拿来主义
首次导入模块发生的三件事:
1,会触发spam.ry的运行,会产生一个模块的名称空间,用来存放模块运行过程中产生的名字
2,会在当前文件夹得名称空间中产生一个名字spam。改名字指向模块得名称空间
print('from the spam.py')
moeny = 1000
def read1():
print('spam模块,moeny')
def read2():
print('spam模块')
def change():
pass
import spam
print(spam.money)
print(spam.read1)
print(spam.read2)
print(spam.change)
使用语句中出现的点,代表问摸一个名称空间要东西
导入语句中出现的点,代表路径分隔符
import 于 from import
import语法:
优点:不会于当前名称空间发生冲突
缺点:每次都要加前缀
import,调用时 要加前缀,
import spam as sm
as语法
import spam as sm,os as xxx,sys re 起别名
from sapm import moeny ,read1,read2,change
print(moeny)
print(read1)
print(read2)
print(change)
相同之处:名称空间这一点上都是一样得
不同之处:import 调用要加前缀,from import 不需要加前缀 但是要注意容易和当前名称空间发生冲突
form 模块名 import *
代表模块中所有得函数名全部调用
优点:很方便,直接调用即可
缺点是 你自己都不知道有哪些模块内得函数名被调用至当前执行文件
运行文件就会产生一个文件的名称空间
循环导入:把循环的语句放入 函数里,用函数的定义阶段不运行的特性
不要使用循环导入
用一个第三方的模块 来解决 需要用到循环导入的 地方