python基础 函数式编程

本文深入解析了函数式编程的核心概念,包括lambda表达式的无参和带参实例、条件判断、高阶函数如map、reduce和sorted,以及闭包函数和装饰器的应用。通过实例演示展示了如何利用这些工具处理可迭代对象和函数组合。
摘要由CSDN通过智能技术生成

函数式编程

函数式编程主要思想是把运算过程尽量写成一系列嵌套的函数调用

“表达式”是一个单纯的运算过程,总是有返回值
“语句”是执行某种操作,没有返回值
函数式编程只使用表达式


匿名函数(lambda表达式)

1,无参的lambda表达式

def get():

return “1”

print(get())

func = lambda : “1”

print(func())

2,有参数的lambda表达式
def add(x,y):
return x+y
print(add(1,2))
#定义
func = lambda x,y:x+y
#调用
print(func(1,2))

3,lambda表达式可以使用可变参数
func = lambda *args:sum(args)
print(func(1,2,4))
func = lambda **kwargs :f"{kwargs}"
print(func(id = 1,city = “北京”)) {‘id’:1,“city”:“北京”}

4,有条件判断的lambda表达式(三目表达式)
func = lambda x:f"{x}是偶数" if x%2==0 else "不是

print(func(21))


高阶函数

概念:把函数当成参数传递的函数就是高阶函数
def printinfo(): #定义了一个函数
​ print(‘info…’)
#高阶函数
def renfunc(func): 定义了参数
​ func() #调用传入的函数
runfunc(printInfo) #函数仅作为参数值,仅是含糊名

1.map()

map() 函数语法:
map(function, iterable, …)
function – 函数
iterable – 可迭代对象

功能:把可迭代对象中的数据逐一拿出来,经过函数处理之后,将结果放到map中并返回一个迭代器对象。

字典键值对互换:
dic = {“北京”:“京”}
res ={}
for a,b in dic.items():
​ res[b] = a
print(res)

map+自定义函数
def change(item):
​ return (item[1],item[0]) #item[1]"值” item[0]“键”
res = map(change,dic.items()) #dic.items()键值对转换成元组的形式
print(dict(res))
res = map(lambda item:(item[1],item[0]),dic.items())
print(dict(res))

reduce函数

功能:给定序列,依次取出一个元素作为参数,与前一次函数结果进行函数运算,最后返回运算结果。

from functools import reduce

sorted函数

和sort函数不同,sort函数修改原列表,sorted排序后赋值给新列表,sorted函数中可以添加函数计算。

filter函数

语法:filter(func,iterable)

功能:过滤数据

如果函数的返回值是True,代表保留当前数据

如果函数的返回值是false,代表舍弃当前数据


闭包函数

概念:内函数使用了外函数的局部变量,并且外函数把内函数返回出来的过程叫做闭包,这个内函数叫做闭包函数。

本质:相对于面向对象的“封装”,闭包可以理解为是函数式编程中的“封装”。

def outer():

​ a=5

​ def inner():

​ print(a)

​ return inner

def test(a,b):
    def test_in(c):
        print(a+b+c)
    return test_in

num = test(1,8)
num(5)
num1=test(2,3)
num1(3)

不用装饰器的闭包函数

def check(func):
    def info():
        print('函数执行之前')
        func()
        print('函数执行之后')
    return info

def printinfo():
    print('函数执行')

newfunc = check(printinfo)
newfunc()    #函数执行之前  函数执行   函数执行之后

用装饰器

# 装饰器@
def check(func):
    def info():
        print('函数执行之前')
        func()
        print('函数执行之后')
    return info

@check
def printinfo():
    print('函数执行')

printinfo()  #函数执行之前  函数执行   函数执行之后

装饰器可以嵌套,可以调用类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值