加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Python 的装饰器语法

发布时间:2023-06-29 14:10:01 所属栏目:教程 来源:
导读:对装饰器这样的高阶函数的应用,Python 提供了特殊的装饰器语法,用法如下:

def decorate(input_function):
def output_function():
pass
return output_function
@decorate
def input_fun
对装饰器这样的高阶函数的应用,Python 提供了特殊的装饰器语法,用法如下:

def decorate(input_function):
    def output_function():
        pass
    return output_function
@decorate
def input_function():
    pass
    
首先定义装饰器函数 decorate,然后使用 @decorate 装饰需要增强功能的函数 input_function。以上使用装饰器语法 @decorate 的代码会被翻译如下:

def decorate(input_function):
    def output_function():
        pass
    return output_function
def input_function():
    pass
input_function = decorate(input_function)
decorate 函数接受输入参数 input_function,返回一个功能增强的函数 output_function。 用功能增强的新函数 output_function 替换原有的旧函数 input_function。

使用装饰器语法

在本小节,使用 Python 的装饰器语法实现对三种排序算法的性能评测:

import time
def decorate(input_sort):
    def output_sort():
        start_time = time.time()
        input_sort()
        end_time = time.time()
        print('%.2f seconds' % (end_time - start_time))
    return output_sort
装饰器 decorate 是一个高阶函数,输入参数 input_sort 是一个排序函数,返回值是 output_sort 一个功能增强的排序函数。

在 output_sort 函数的头部,记录开始时间,调用原排序函数 input_sort,在 output_sort 函数的尾部,记录结束时间。

@decorate
def quick_sort():
    time.sleep()
@decorate
def bubble_sort():
    time.sleep()
@decorate
def select_sort():
    time.sleep()
使用装饰器 decorate 装饰 quick_sort,得到一个功能增强的 quick_sort;使用装饰器 decorate 装饰 bubble_sort,得到一个功能增强的 bubble_sort;使用装饰器 decorate 装饰 select_sort,得到一个功能增强的 select_sort。

quick_sort()
bubble_sort()
select_sort()
依次调用 quick_sort、bubble_sort、select_sort,打印它们各自的运行时间,程序输出如下:

1.00 seconds
2.00 seconds
3.00 seconds

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章