#函数(下)
#间接调用函数
def output(m):
print(m)
x=output
x('间接调用')
#匿名函数,没有函数名称、临时使用的微函数
#lambda[arg1[,arg2....]]:表达式
sum = lambda num1,num2:num1+num2
print(sum(4,5))
def fun(num1,num2,func):
return func(num1,num2)
print(fun(8,6,lambda num1,num2:num1+num2))
info=[
{'name':'xiaoming','score':'99'},
{'name':'xiaofeng','score':'90'},
{'name':'xiaohong','score':'89'}
]
#按姓名字母由大到小排序
info1=sorted(info,key=lambda x:x['name'],reverse=True)
print(info1)
#按分数由小到大
info2=sorted(info,key=lambda x:x['score'])
print(info2)
#闭包
#通过return返回一个变量,也可以返回另一个函数名
list=[1,2,3,4]
def f2(list):
def f1():
return sun(list)
return f1
x=f2(list)
print(x())
#外层函数返回内层函数名:闭包
#装饰器
#可以让其他函数在不做任何代码修改的前提下增加额外功能
def f3(arg='装饰器的参数'):
def f2(func):
def f1():
print(arg)
return func()+1
return f1
return f2
@f3('带参数的装饰器')#连接装饰器和被装饰器
def func():
print('func()函数')
return 1
print(func())
#输出:带参数的装饰器,func()函数,2
#偏函数
def myadd1(a,b,c):
return a+b+c
def myadd2(a,b):
return myadd1(a,b,122)
print(myadd2(1,11))
eval()
eval(source,globals=None,locals=None)
#对动态表达式求值
print(str,'的结果为',eval(str))#.....的结束为...
exec()
exec(source,globals=None,locals=None)
#用于动态语句
exec(str)
compile()#将一个字符串编译为字节代码
co=compile(str,'','exec')
exec(co)
map()#对列表和其他序列中的每个元素进行同一个操作并将其结果集合起来
list1=[1,2,3,4]
func=lambda x:x+10
list2=list(map(func,list1))
print(list2)
filter()#对指定序列进行过滤操作
#他所引用的函数只能接受一个参数
seq=['qianfeng','codingke.com','*#$']
func=lambda x:x.isalnum()
list=list(filter(func,seq))
print(list)#['qianfeng']
zip()#将一系列可迭代对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的迭代对象
#将列表1的第一个元素和列表2的第一个元素组成一个元组,取最短