Python努力学习笔记(第十课)

Python学习第十课

1. ⾼阶函数

1.1 满足高阶函数的条件:

  • 接收函数作为参数
    需要2个函数,一个函数是另一个函数的参数
def sum1(a):                 # 一个函数
    for i in range(a):
         a += i
    return a

def hah(sn,a):              # 另一个函数
    new1 = []
    for i in range(sn(a)):
        if i % 3 == 0:
            new1.append(i)
    return new1

if __name__ == '__main__':
    r = hah(sum1,10)
    print(r)

在这里插入图片描述

  • 将函数作为返回值返回的函数就是⾼阶函数
    将一个函数(a)作为另一个函数(b)的返回值返回,那么b函数就是高阶函数
def fun(a, b):                  # a函数
	c = a + b
	return c
	
def tedd(func1, a, b):           # b函数     
    result = func1(a,b)
    return result

if __name__ == '__main__':
    nx1 = tsdd(fun,10,90)
    print(nx1)
# 还有一个例子是关于匿名函数用以构成的高阶函数
# 匿名函数:lambda函数  (无名函数)
# 语法: lambda 参数列表 :表达式
def test(a,b,func):
    result = func(a,b)
    return result
# lambda x,y:x+y 这部分就是匿名函数
num = test(11,22,lambda x,y:x+y)     
print(num)

这是高阶函数的思想

2. 闭包

  • 将函数作为返回值也是⾼阶函数我们也称为闭包
  • 闭包的好处
    • 通过闭包可以创建⼀些只有当前函数能访问的变量
    • 可以将⼀些私有数据藏到闭包中
  • ⾏成闭包的条件
    • 函数嵌套
    • 将内部函数作为返回值返回
      内部函数必须要使⽤到外部函数的变量

3. 装饰器的引入

  • 我们可以直接通过修改函数中的代码来完成需求,但是会产⽣以下⼀些问题
    • 如果修改的函数多,修改起来会⽐较麻烦
    • 不⽅便后期的维护
    • 这样做会违反开闭原则(ocp)
  • 程序的设计,要求开发对程序的扩展,要关闭对程序的修改

4. 装饰器的使用

  • 通过装饰器,可以在不修改原来函数的情况下来对函数进⾏扩展
  • 在开发中,我们都是通过装饰器来扩展函数的功能的
def fn(fun):
    def new_fun(*args, **kwargs):
        print('函数开始执行')
        r = fun(*args, **kwargs)
        print('函数执行结束')
        return r
    return new_fun
    
@fn
def speak():
    print('同学们好好学习啊')

if __name__ == '__main__':
    speak()

结果就是
在这里插入图片描述

5. 作业

用一个装饰器实现一个函数的运行时间所花费的时间

import time

def zsh(fun):
    def gdc(a):
        tst = time.time()
        fun(a)
        ten = time.time()
        txx = ten - tst
        print("函数执行时间为%s" % txx, "s")
    return gdc

@zsh
def sum1(a):
    for i in range(a):
        i += i
        print(i)

if __name__ == '__main__':
    sum1(10000)

结果如下图:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值