程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2024-11(1)

Python 装饰器

发布于2020-03-09 15:53     阅读(1662)     评论(0)     点赞(22)     收藏(4)


Python 装饰器

一、装饰器定义

装饰器本质就是函数,功能是为其他函数添加附加功能

原则:

1)不修改被修饰函数的源代码

2)不修改被修饰函数的调用方式

二、装饰器知识储备

装饰器 = 高阶函数 + 函数嵌套 + 闭包

三、高阶函数

1.高阶函数定义:

  • 函数接受的参数是一个函数名

  • 函数的返回值是一个函数名

  • 满足上述条件任意一个都可以称之为高阶函数

2.高阶函数的示范

  • 把函数当做参数传给高阶函数
import time

def foo():
    time.sleep(1)
    print('你好刘亦菲')

def test(func):
    print(func)
    start_time = time.time()
    func()
    stop_time = time.time()
    print('函数运行时间是  %s' % (stop_time - start_time))


foo()
test(foo)

在这里插入图片描述

可以看到foo函数又在test函数中执行了一遍

3.高阶函数的总结

  • 函数接受的参数是一个函数名

​ 作用:在不修改函数源代码的前提下,为函数添加新功能

​ 不足:会改变函数的调用方式

  • 函数的返回值是一个函数名

​ 作用:不修改函数的调用方式

​ 不足:不能添加新功能

四、函数嵌套

函数嵌套就是在函数里面在定义函数

def func():
	pass
	def func1():
		pass
		def func2():
			pass
	pass

五、闭包

在一个外函数中定义了一个内函数,内函数里运用了外函数的临时变量,并且外函数的返回值是内函数的引用。这样就构成了一个闭包

例子

def func(a):
	aa=11
	def func1():
		c=a+aa
		print(c)
	return func1

使用闭包的过程中,一旦外函数被调用一次返回了内函数的引用,虽然每次调用内函数,是开启一个函数执行过后消亡,但是闭包变量实际上只有一份,每次开启内函数都在使用同一份闭包变量

def outer(x):
    def inner(y):
        nonlocal  x
        x+=y
        return x
    return inner

a=outer(100)
print(a(50))  
print(a(100))

在这里插入图片描述



所属网站分类: 技术文章 > 博客

作者:我是小白兔

链接:https://www.pythonheidong.com/blog/article/248815/28e753bf458374a2c2a0/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

22 0
收藏该文
已收藏

评论内容:(最多支持255个字符)