闭包和装饰器

闭包:

        在一个函数里嵌套一个函数,外部函数返回内部函数,内部函数可以调用外部函数的变量和参数

# 定义外部函数
def fun1():
    # 定义变量
    num1 = 1
    # 定义内部函数
    def fun2(num2):
        # 使用外部函数
        num3 = num1 + num2
        print(num3)
    # 外部函数返回内部函数
    return fun2


# 获取闭包 
new = fun1()


# 执行

nwe(3)


# 此时输出 4    外部函数num1=1   输入的内部函数num2=3 所以结果为4

作用:

        保存外部函数的变量,不会随着外部函数调用完而销毁

装饰器:

本质上就是一个闭包,也就是函数嵌套

improt time

def decorator(func)

    def built_in_function()
        
        print("函数运行了")

        func()
        
        print("函数结束了")
    return built_in_function



@decorator
def fun()
    for i in range(1, 10)
        print(i)


# 调用函数
fun()


# 运行结果
函数运行了
1
2
3
4
5
6
7
8
9
函数结束了

作用:

        在不改变源代码、函数的调用方式的前提下给函数添加新的功能

闭包与装饰器的区别:

        装饰器本质上就是一个闭包,但是装饰器有且只有一个参数并且是函数类型

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值