当前位置:   article > 正文

Python基础10-高阶函数、匿名函数、闭包、装饰器_python匿名函数闭包装饰器

python匿名函数闭包装饰器

七、函数(点击跳转)

9、高阶函数

把函数作为参数把函数作为返回值 的函数就是高阶函数

  • 函数作为参数
示例1def fn1(f):
    if f %2 == 0:
        print(f,'这是一个偶数')
    elif f %2 != 0:
        print(f,'这是一个奇数')
    return ''
def fn2(a,b):
    return a ** b
fn1(fn2(5,5))

>> 3125 这是一个奇数
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 把函数当作返回值
示例1def fn1():
	def fn2(a,b):
		return a+b
	return fn2
r = math()
print(r(2,3))

>> 5
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

10、匿名函数(lambda)

语法:lambda 表达式

用于表达一些比较简单的函数
匿名的好处就是只会运行一次,运行结束后会在内存中消失

示例1:
r = (lambda a,b: a+b)(10,20)
print(r)

>> 30
  • 1
  • 2
  • 3
  • 4
  • 5

11、闭包

闭包也是高阶函数的一种
形成闭包的条件:

1、函数嵌套
2、内部函数被当作返回值
3、内部函数要使用到外部函数的变量

闭包的作用:

自定义一些只有当前函数能够访问的变量(不被全局访问,只能在函数内部进行访问)
可以把一些重要的数据放进闭包

示例1def fn1():
    r = 0
    def fn2(a,b): # 函数嵌套
        r = a ** b # 使用到外部的变量
        return r
    return fn2 # 以内部函数作为返回值
d = fn1()
print(d(2,5))
	
>> 32
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

12、装饰器

12.1、装饰器的引入

为什么要装饰器:
在函数过多的时候,
1、修改麻烦,耗费时间
2、不方便后期的维护
3、违反ocp原则(开闭原则)

开闭原则:
开放对程序的扩展,关闭对程序的修改

12.2、装饰器

装饰器:
通过定义一个函数对其他函数进行扩展的函数 ( 对一个函数进行包装 )
通过装饰器可以在不修改原来的函数的情况下对函数进行扩展

12.3、装饰器的使用

在函数前面用 @ 列出装饰器

示例1:
@装饰器名字
def fn1():
	pass

示例2def fn(func): #定义一个装饰器,增加打印的输出
    def fn1():
        print('执行开始')
        func()
        print('执行结束')
    return fn1
@fn   # 对fnu1进行扩展
def fnu1(): 
    print('hello world')
@fn   # 对fnu2进行扩展
def fnu2():
    print('hello Python')
fnu1()
fnu2()

>> 执行开始
>> hello world
>> 执行结束
>> 执行开始
>> hello Python
>> 执行结束
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/617205
推荐阅读
相关标签
  

闽ICP备14008679号