闭包+装饰器

本文深入探讨了Python中的作用域概念,包括全局和局部作用域,以及如何通过闭包来保持局部变量的状态。同时,通过实例展示了装饰器的基本使用,它允许在不修改原有函数代码的情况下添加新功能。装饰器在实际编程中有着广泛的应用,如日志记录、权限检查等。最后,文章通过一个日志装饰器的例子,展示了如何利用装饰器在函数调用前后插入日志输出,增强了代码的可读性和可维护性。
摘要由CSDN通过智能技术生成

Python中也有作用域的概念

① 全局作用域:函数外部的区域就是全局作用域
② 局部作用域:函数内部的区域就是局部作用域
函数分为全局变量和局部变量
全局变量可以在函数外部访问也可以在函数内部访问,局部变量只能在函数运行时被访问且只能在函数内部局部作用域被访问当函数执行完毕后,期内部的变量会随着函数的执行结束,而自动销毁。
闭包形成:
1、有嵌套
2、有引用
3、有返回
在这里插入图片描述
f=outer()
f()
闭包保证局部变量在函数执行完毕以后不会消失

输出结果11,12,13
闭包保证局部变量在函数执行完毕以后不会消失,每次在这个变量的基础上完成一些列的操作

装饰器雏形:

#在原有函数基础上添加一个新功能

def check(fn):
    def inner():#有嵌套
        print('请先登录')
        fn() #有引用
    return inner  #有返回

#原有函数:主要功能实现发表评论

@check
def comment():
    print('发表评论')
#原有函数调用方式
comment()


import  time
def logging(fn):
    def inner(*args,**kwargs):
        print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
        result=fn(*args,**kwargs)
        return  result
    return inner

@logging
def sum_num(*args,**kwargs):
    result=0
    for i in args:
        result+=i
    for i in kwargs.values():
        result+=i
    return result


print(sum_num(1, 2, a=3, b=4, c=5))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值