python--lambda表达式,高阶函数map,reduce,filter,sorted,闭包,偏函数,装饰器

lambda表达式(匿名函数):可以解决有时候函数很小很短,会造成浪费啰嗦,不利于读者阅读的普通函数缺点

s=lambda:x,y,z:x+y+z
s(1,2,3)

高阶函数:把函数作为参数使用

def funa(n):
    return n*10
def funb(n):
    return funa(n)*9

系统高阶函数map,扩大倍数

a=[i for i in range(1:10)]
def funa(n):
    return n*10
b=map(funa,a)
for i in b:
    print(i)

系统高阶函数reduce

from funtools import reduce
def add(x,y):
    return x+y
#对列表进行归并操作
re=reduce(add,[1,2,3,4,5,6])
print(re)#21

系统高阶函数filter:过滤函数,对一组数据进行过滤,过滤函数要有输入,返回布尔值

#找出列表中的偶数
def iseven(a):
    return a%2==0
l=[1,3,4,5,6,6,7,8]
res=filter(iseven,l)
print([i for i in res])

系统高阶函数sorted--排序

l=[13,23,664,665,1446,46,7,48]
al=sorted(l,reverse=True)
print(al) #从大到小排序
bl=sorted(l,key=abs,reverse=True) 先按绝对值排序,在倒序

asttr=["dada","swallow","dkDK","LIE"]
cl=sorted(asttr,key=str.lower)#按小写字母排序
cl=sorted(asttr)

闭包(closure):当一个函数在内部定义函数,并且内部的函数应用外部函数的参数或局部变量,当内部函数作为返回值时,相关参数和变量保存在返回的函数中 ,返回的变量不能存在任何循环变量,否则会出问题

def funa(*args):
    def funb():
        re=0
        for n in args:
        re+=n
        return re
    return funb
fb=funa(1,2,3,45)
fb()

装饰器(Decrator):在不改动函数代码的情况下无限扩展函数的功能,本质上是一个返回函数的高阶函数

比如在打印hello的函数上扩展打印当前系统时间

import time
def printtime(f):
    def wrapper(*args,**kwargs):
        print("time",time.ctime())
        return f(*args,**kwargs)
    return wrapper

@printtime
def hello():
    print("hello")

偏函数,参数固定的函数

import funtools
int("123",base=8) #把123改成八进制的数字
int16=funtools.partial(int,base=16)#固定为16进制
int16("1234")

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值