1、匿名函数

格式:lambda 参数:表达式(f返回值)

实际应用:一般用来定义在表达式简单的函数,使用匿名函数可以简化代码,像与map、filter等函数的使用

例子:

#普通函数
def func(x):
    return x*2

#匿名函数
lambda x:x*2

#多个参数的匿名函数
lambda x,y:x+y

#没有参数的匿名函数

res=lambda :100
print(res())
#100

 

匿名函数的应用:

# 问题需求一:对下面的列表进行排序(规则:根据列表中每个元素的第二个值的大小进行排序)
li = [[1, 10, 32], [3, 22, 99], [2, 7, 77]]
li.sort(key=lambda x:x[1])
print(li)
#[[2, 7, 77], [1, 10, 32], [3, 22, 99]]

# 问题需求二:对下面的列表进行排序(规则:根据元素的name字段的值的大小进行排序)
li2 = [{'id': 1, "name": 100}, {'id': 7, "name": 9}, {'id': 3, "name": 1}]
li2.sort(key=lambda x:x["name"])
print(li2)
#[{'id': 3, 'name': 1}, {'id': 7, 'name': 9}, {'id': 1, 'name': 100}]

 

2、内置函数

exec: 执行python代码

code="""
print(666)
"""
exec(code)
#输出666

 

map函数:将函数应用于iterable中每一项并输出期结果

map(参数1:处理函数,参数2:可迭代对象)

li = [11, 33, 34, 55, 7, 2, 7, 66, 899, 7, 5]
print(list(map(lambda x:x*2,li)))
#输出 [22, 66, 68, 110, 14, 4, 14, 132, 1798, 14, 10]

 

filter函数:过滤器

filter(参数1:过滤规则函数,可迭代对象)

li = [11, 33, 34, 55, 7, 2, 7, 66, 899, 7, 5]
print(list(filter(lambda x:x>100,li)))
#输出[899]

 

all: 迭代对象内所有的元素为真,返回True

a=100
b=100

if (a and b)>50:
    print("zhen")
#输出 zhen

if all([a>50,b>50]):
    print("")
#输出 真

 

any: 迭代对象内只要有一个元素为真,返回True

a=100
b=10
if (a or b)>50:
    print("zhen")
#输出 zhen

if any([a>50,b>50]):
    print("")
#输出 真

 

zip函数:聚合打包

a=[1,2,3,4]
b=[7,8,9]
print(dict(zip(a,b)))
#输出 {1: 7, 2: 8, 3: 9}

a1=[1,2,3,4]
b1=[7,8,9]
c1=[11,22,33]
print(list(zip(a1,b1,c1)))
#输出 [(1, 7, 11), (2, 8, 22), (3, 9, 33)]

 

3、闭包函数

实现一个闭包函数,须满足如下条件:

  1)函数中嵌套一个函数

  2)外层函数返回内层函数的变量名

  3)内层函数对外部作用域有一个非全局的变量进行引用

例子:

def fun():
    a=1
    def func():
        return a+1
    return func

闭包函数=函数+保存引用数据的封闭作用域