5.5 python函数式编程之--返回函数、匿名函数、偏函数(暂时稍微了解即可)

 1、    先回归历史:什么是函数
          函数就是通过将局部【目标】实现并封装起来, 后续可直接拿来用
 2、   函数式编程:  是把运算过程尽量写成一系列嵌套的函数调用

一、返回函数

     返回函数: 函数作为返回值
     闭包: 函数内部定义函数, 我们叫做内部函数, 内部函数可以引用外部函数的参数/局部变量, 当调用外部函数返回的是哪部函数时, 参数/变量都保存在返回的函数中,这种就叫做【闭包】
     案例: 相加一堆数字,计算出最终结果
     [关键字] 闭包
list1 = list(range(0, 10))
list2 = list(range(0, 20))


# 1、 普通实现
def calc_sum(*args):
    sum = 0
    for one in args:
        sum = sum + one
    return sum


# 2、返回函数
def return_sum(*args):
    def sum():
        sum_total = 0
        for one in args:
            sum_total = sum_total + one
        return sum_total

    return sum


a = return_sum(*list1)
b = return_sum(*list1)
print(a == b)
print(a)
print(a())

在这里插入图片描述

调用外部函数时,每次调用都是一个新的函数,故而:如果传入相同参数, 会发现相互不影响
对与闭包函数使用, 调用外部函数时,其实并没有执行,直到调用了内部函数才会执行
【特别注意】
1、 闭包时:尽量避免在返回函数中引用可变化的变量
2、 内层函数引用外层函数局部变量,如果未赋值可正常执行 ----如图2案例
3、 内层函数引用外部函数且对外层变量重新赋值,会报错—见图3
但是如果想要正常运行, 可以增加nonlocal声明变量非当前内部函数局部变量,具体见图4

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

二、 匿名函数lambda

 此处用法不再详细赘述,可参考上一节《5.4 python内置高阶函数之--map、reduce、filter、sorted》中map用法中关于lambda的使用说明,如有疑问,可评论或私聊再学习

三、 偏函数

 1、 【什么是偏函数】
        偏函数就是对之前的使用到的函数进行包装,将现在存在的函数的一些参数存到指定值中,最后得到一个新的函数
  2、【偏函数的作用】
  就是把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数,调用这个新函数会更简单
  3、 【基本语法】from functools import partial
        偏函数名 = partial(func, *args, **kwargs)
def get_div(m, n):
    return m % n == 0


def get_div2(m, n, c):
    return m * n % c == 0


from functools import partial

div_1 = partial(get_div, n=3)
print(div_1(100))
print(div_1(96))

div_2 = partial(get_div2, c=3)
print(div_2(4, 6))
print(div_2(7, 5))

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值