标签:entrance return start python 案例 func print 装饰 def
一 装饰器
作用是为了将一个子模块加入新的功能,但是不修改原有的代码
二 案例
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'
标签:entrance,return,start,python,案例,func,print,装饰,def 来源: https://www.cnblogs.com/qianyuesheng/p/16195615.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。