装饰器案例 python
2022/4/28 14:12:47
本文主要是介绍装饰器案例 python,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一 装饰器
作用是为了将一个子模块加入新的功能,但是不修改原有的代码
二 案例
def operate(func): def wrapper(*args, **kwargs): # 闭包函数 value = func(*args, **kwargs) print(value, args, kwargs) return value return wrapper @operate def start_func(count, second="yes"): count = count * 10 print("这里是加了装饰器的函数 %d" % count) return count start_func(10, second="no")
输出:
这里是加了装饰器的函数 100 100 (10,) {'second': 'no'} 100
# 不含参数的装饰器
## 不含参数的装饰器 def jump_func(funcName): def build_in(a, b, c): # 这个函数要与 start_entrance 函数参数一致 b = "woman" print("-----before-----", a, b, c) change = funcName(a, b, c) print("-----after------", change) return change return build_in @jump_func def start_entrance(name, sex, age): # sex = "crazy" # age = 18 print("stat func:", name, sex, age) return (name, sex, age) result = start_entrance("honer", "man", 78)
输出:
-----before----- honer woman 78 stat func: honer woman 78 -----after------ ('honer', 'woman', 78)
有参数的装饰器
# 传递带有参数的装饰器,能在运行时,处理不同的功能 """ 1 先执行 trans_args("start") 函数,这个函数return 的结果是func这个函数的引用 2 @func 3 使用 @func 对start_entrance 进行装饰 """ def trans_args(arg): def func(funcName): def build_in(): if arg == "start": # 装饰器里的参数 result = funcName() print(result) return result else: result = funcName() return "not comparable" return build_in return func @trans_args("start") def start_entrance(): wrap = "嵌入其中的函数" print(wrap) return wrap res = start_entrance() @trans_args("from") def from_entrance(): variable = "hello, world" print(variable) return variable from_entrance()
输出:
嵌入其中的函数 嵌入其中的函数 hello, world 'not comparable'
这篇关于装饰器案例 python的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-03用FastAPI掌握Python异步IO:轻松实现高并发网络请求处理
- 2025-01-02封装学习:Python面向对象编程基础教程
- 2024-12-28Python编程基础教程
- 2024-12-27Python编程入门指南
- 2024-12-27Python编程基础
- 2024-12-27Python编程基础教程
- 2024-12-27Python编程基础指南
- 2024-12-24Python编程入门指南
- 2024-12-24Python编程基础入门
- 2024-12-24Python编程基础:变量与数据类型