python 装饰器

1. 无参装饰器(无函数返回值)

复制代码
import time  
def timer(func):  
    ''' prints function time '''  
    def wrapper():  
        start = time.time()  
        func()  
        print('function %s run time %s' % (func.__name__, time.time() - start))  
    return wrapper  
@timer  
def f1():  
    time.sleep(1)  # 通过“睡”一会儿,模拟函数执行的时间  
@timer  
def f2():  
    time.sleep(2)  
f1()  # function f1 run time 1.0000762939453125  
f2()  # function f2 run time 2.000044345855713  
复制代码

2. 有参装饰器(无函数返回值)

复制代码
import time  
def timer(func):  
    def wrapper(*args, **kwargs):  
        start = time.time()  
        func(*args, **kwargs)  
        print('function %s run time %s' % (func.__name__, time.time() - start))  
    return wrapper  
@timer  
def public():  
    time.sleep(0.1)  
    print('oldboy public index page')  
@timer  
def admin(name):  
    time.sleep(0.1)  
    print('oldboy public admin page')         # 老男孩后台页面  
    if name == 'root':                      # 只有用户名是root的用户才能访问  
        return 'welcome vip page'  
    return 'name error'                     # 否则提示请用户名错误  
public()  
admin('oldboy')  
"""
# 上面两个函数执行结果  
oldboy public index page                    # public函数执行的结果  
function public run time 0.10057306289672852  
oldboy public admin page                    # 成功进入了admin页面  
function admin run time 0.10007095336914062  
"""
复制代码

3. 有参数,有函数返回值

复制代码
import time  
def timer(func):  
    def wrapper(*args, **kwargs):  
        start = time.time()  
        ret = func(*args, **kwargs)  
        print('function %s run time %s' % (func.__name__, time.time() - start))  
        return ret  #被执行函数的函数返回值
    return wrapper  
@timer  
def public():  
    time.sleep(0.1)  
    print('oldboy public index page')  
@timer  
def admin(name):  
    time.sleep(0.1)  
    print('oldboy public admin page')  # 老男孩后台页面  
    if name == 'root':  # 只有用户名是root的用户才能访问  
        return 'welcome vip page'  
    return 'name error'  # 否则提示请用户名错误  
public_ret = public()  
admin_ret = admin('root')  
print('public return:', public_ret)  # public return: None  
print('admin return:', admin_ret)  # admin return: welcome vip page 
复制代码

 

posted @   我不知道取什么名字好  阅读(30)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示