ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

初学Python-day12 装饰器函数

2021-10-19 14:34:44  阅读:205  来源: 互联网

标签:test1 fun1 Python say 初学 day12 print return def


装饰器

 

1.概念

本质就是一个Python函数,其他函数在本身不变的情况下去增加额外的功能,装饰器的返回值是一个函数。

常用的场景:插入日志,事务处理,缓存,权限校验等。

2.普通函数回顾

1 def speak():
2     print('hello world')
3 
4 say = speak
5 say()

 

3.函数的嵌套

1 def test1():
2     def test2():
3         print('test2')
4     def test3():
5         print('test3')
6     return test2
7 test2 = test1()
8 test2()

 

4.函数作为参数传递

 

 1 def fun1(arg):
 2     def test1():
 3         print('---')
 4         arg()
 5         print('---')
 6     return test1
 7 
 8 def say():
 9     print('hello world!')
10 
11 test1 = fun1(say)
12 test1()

 

5.装饰器

 1 def fun1(arg):
 2     def test1():
 3         print('=========')
 4         arg()
 5         print('=========')
 6         return True
 7     return test1
 8 
 9 
10 @fun1
11 def say():
12     print('hello world!')
13 
14 say()
15 print(say.__name__)

 

6.带参数的装饰器

如果需要给装饰器传入参数,则在嵌套一层函数即可

 1 from datetime import datetime
 2 
 3 
 4 def log(text):
 5     def decorator(fun1):
 6         def warrper(*args, **kwargs):
 7             print(text, fun1.__name__)
 8             return fun1(*args, **kwargs)
 9         return warrper
10     return decorator
11 
12 
13 @log('text')
14 def now():
15     print(datetime.now())
16 
17 now()
18 print(now.__name__)

 

 

7.偏函数

--int函数

将字符串中的数值转换为十进制

1 print(int('10'))
2 print(int('10', base=2))

 

标签:test1,fun1,Python,say,初学,day12,print,return,def
来源: https://www.cnblogs.com/liu-blogs/p/15424587.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有