Python 装饰器的定义和使用,闭包的定义和使用

装饰器 decorators

  装饰器的定义
    装饰器是一个函数,这函数的主要作用是包装另一个函数或类
    包装的目的是在不改变原函数名的情况下改变被包装对象的行为

函数装饰器 function decorators
  函数装饰器是指装饰器是一个函数,传入的是一个函数,返回的也是一个函数

示意:

def mydeco(fn):  # 装饰函数
    def fx():
        print("++++++++")
        fn()
        print("--------")
    return fx
@mydeco
def hello():# 被装饰函数
    print("hello world")

hello() # 调用者

@后跟的函数就是装饰函数,当执行被装饰函数时,相当于把hello函数作为参数传入mydeco函数中执行fx函数

示意二:

def fun(x):
    def fun1():
        ret = 10 * 20
        x(ret)
    return fun1


@fun
def fun2(q):
    print(q)
fun2()

一个函数也可以有多个装饰器

列如:

def fun1(fn):
    def fx():
        print("hi")
        fn()
    return fx

def fun2(fn):
    def fx():
        print("hello")
        fn()
    return fx
    
@fun1
@fun2
def fun3():
    print("小明")
fun3()

当一个函数同时被多个装饰器进行装饰的时候,按照从上到下的顺序依次进行执行

闭包 closure

定义:
  将内嵌函数的语句和这些语句的执行环境打包在一起后,得到的函数对象称为闭包
实现闭包必须要满足以下三个条件:
  1.必须有一个内嵌函数
  2.内嵌函数必须引用外部函数中的变量
  3.外部函数返回值必须是内嵌函数

说明
  如果一个内嵌函数访问了外部嵌套函数作用域内的变量,则这个内嵌函数就是闭包

示意:

def fun(x):
    def fun2():
        return 5**x
    return fun2
fn=fun(2)
print(fn())

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值