吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 899|回复: 3
收起左侧

[Python 原创] 分享携带参数的装饰器

[复制链接]
qzcwuaipojie 发表于 2023-11-14 09:59
装饰器大家都知道是python常用的技巧,那如果我想给装饰器也传入参数呢?
其实就是再写一个装饰器在外层即可!
import threading

from functools import wraps

def outer_func(name, sex):
    def decorator(fn):
        @wraps(fn)
        def wrapper(*args, **kwargs):
            print(f'{name} 性别为 {sex}')
            return fn(*args, **kwargs)

        return wrapper

    return decorator

@outer_func('小蓝', '男')
def func(name, age):
    print(f'{name} 年龄为 {age}')

def print_func():
    print(func.__name__)

def main():
    func_thread = threading.Thread(target=func, args=('小黄', 19))
    print_thread = threading.Thread(target=print_func)

    thread_list = [func_thread, print_thread]
    for thread in thread_list:
        thread.start()
    for thread in thread_list:
        thread.join()
    print('主线程结束!')

if __name__ == '__main__':
    main()


大家还可以看到,我用了线程去执行,然后还添加了一个工具函数,让本身被装饰的函数的 name 不会被修改!

免费评分

参与人数 2吾爱币 +8 热心值 +2 收起 理由
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
dujiangfu + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

magiclyan 发表于 2023-11-14 10:46
算是个不错的启发思路
Hyqh 发表于 2023-11-14 11:02
TieXuan 发表于 2023-11-14 11:47
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 20:25

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表