python 闭包与装饰器

简介: 如果在一个内部函数里,对在外作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包闭包 = 内部函数 + 定义函数时的环境h = f() h() # 对x=10进行了延伸 h() h() h()




一、闭包与装饰器

高阶函数有2条件满足其中一个都叫高阶函数

1. 函数可以作为参数输入

2. 函数可以作为返回值

1、闭包

介绍

如果在一个内部函数里,对在外作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包

闭包 = 内部函数 + 定义函数时的环境

def f():
    x = 10
    def g():
        print(x)
    return g
h = f()
h() # 对x=10进行了延伸
h()
h()
h()

2、装饰器

时间戳:指1970年01月01日00时00分00秒起到现在的总秒数,能唯一地标识某一刻时间

装饰器:装饰就是添加一个新的功能,为你之前的某个函数添加新的功能

def foo():
    print("foo....")

show_time 装饰器: 功能是给 函数增加计算时间功能

def show_time(func):  # 只能计算foo的时间
    def inner():
        start = time.time()
        func()
        end = time.time()
        print(f"运行了{end - start}秒")
    return inner

foo = show_time(foo) # 给foo扩展时间功能

foo()

python提供了更优雅的语法题 @

@show_time  # 帮你做这个事  foo = show_time(foo)
def foo():
    print("foo....")
foo()

1.0模板 只能对无参的扩展

def show_time(func):
    def inner():
        start = time.time()
        func()
        end = time.time()
        print(f"运行了{end - start}秒")
    return inner

2.0模板 参数无所谓版本

def show_time(func):
    def inner(*args,**kwargs):
        start = time.time()
        func(*args,**kwargs)  # 原函数
        end = time.time()
        print(f"运行了{end - start}秒")
    return inner  # 新函数

3.0版本 返回值无所谓版本

def show_time(func): # func原函数
    def inner(*args,**kwargs):  # inner是新函数
        。。。。。扩展实现区域
        res = func(*args,**kwargs) # 保证原函数功能
        。。。。。扩展实现区域
        return res # 返回原函数的返回值
    return inner # 返回新函数
相关文章
|
8天前
|
缓存 测试技术 Python
Python装饰器:优雅地增强函数功能
Python装饰器:优雅地增强函数功能
158 99
|
8天前
|
存储 缓存 测试技术
Python装饰器:优雅地增强函数功能
Python装饰器:优雅地增强函数功能
142 98
|
12天前
|
缓存 Python
Python中的装饰器:优雅地增强函数功能
Python中的装饰器:优雅地增强函数功能
|
22天前
|
存储 缓存 测试技术
理解Python装饰器:简化代码的强大工具
理解Python装饰器:简化代码的强大工具
|
1月前
|
程序员 测试技术 开发者
Python装饰器:简化代码的强大工具
Python装饰器:简化代码的强大工具
156 92
|
3月前
|
Python
掌握Python装饰器:轻松统计函数执行时间
掌握Python装饰器:轻松统计函数执行时间
274 76
|
27天前
|
设计模式 缓存 运维
Python装饰器实战场景解析:从原理到应用的10个经典案例
Python装饰器是函数式编程的精华,通过10个实战场景,从日志记录、权限验证到插件系统,全面解析其应用。掌握装饰器,让代码更优雅、灵活,提升开发效率。
89 0
|
4月前
|
人工智能 API Python
掌握 Python 文件处理、并行处理和装饰器
本文介绍了 Python 在文件处理、并行处理以及高级功能(如装饰器、Lambda 函数和推导式)的应用。第一部分讲解了文件的基本操作、读写方法及处理大型文件的技巧,并演示了使用 Pandas 处理结构化数据的方式。第二部分探讨了多线程与多进程的并行处理,以及 `concurrent.futures` 模块的简化用法,适合不同类型的任务需求。第三部分则深入装饰器的实现与应用,包括简单装饰器、带参数的装饰器及 `functools.wraps` 的使用,同时简要介绍了 Lambda 函数和推导式的语法与场景。内容实用且全面,帮助读者掌握 Python 高效编程的核心技能。
|
9月前
|
测试技术 数据安全/隐私保护 开发者
探索Python中的装饰器:从基础到高级应用
装饰器在Python中是一个强大且令人兴奋的功能,它允许开发者在不修改原有函数代码的前提下增加额外的功能。本文将通过具体代码示例,带领读者从装饰器的基础概念入手,逐步深入到高级用法,如带参数的装饰器和装饰器嵌套等。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和技巧。
110 6

推荐镜像

更多