内容简介:python 3.x 学习笔记5 (装饰器)
1.装饰器:
本质是函数,(装饰其他函数)就是为其他函数添加附加功能
原则:
1)不能修改被装饰的函数的源代码
2)不能修改被装饰的函数的调用方式
2.实现装饰器知识储备:
1)函数即“变量”
2)高阶函数
a.把一个函数当作实参传给另一个函数(可以做到不修改被装饰函数的源代码的情况下为其添加功能)
b.返回值中包含函数名)(不修改函数的调用方式)
3)嵌套函数
3.高阶函数+嵌套函数=》装饰器
4.初步装饰器
import time def timer(func): #timer(test1) func = test1 def deco(): start_time = time.time() func() #run test1 stop_time = time.time() print('the func run time is %s'%(stop_time-start_time)) return deco @timer #test1 = timer(test1) def test1(): time.sleep(3) print('in the test1') test1()
5.功能比较完善的装饰器
user,passwd = 'hsj','1234' def auth(auth_type): print('auth func:',auth_type) def outer_wrapper(func): def wrapper(*args, **kwargs): print('wrapper:',*args, **kwargs) if auth_type == 'local': username = input('Username:').strip() password = input('Password:').strip() if username == user and password == passwd: print('\033[32;1mUser has pass authentication\033[0m') return func(*args, **kwargs) # from home #函数wrapper的返回值 else: exit('\033[31;1mInvalid username or password\033[0m') elif auth_type =='ldap': print('ldappppppppp') return wrapper return outer_wrapper def index(): print('welcome to index psge') @auth(auth_type='local') # 加了括号相当于运行了outer_wraper所以会执行里面内容 # home = auth(home) def home(): print('welcome to home page') return 'from home' #这里有返回值在装饰器里也应该有个返回值不然是print()不出来的 @auth(auth_type='ldap') def bbs(): print('welcome to bbs page') index() print(home()) bbs()
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- python笔记5:装饰器、内置函数、json
- 装饰器与元数据反射(1)方法装饰器
- 草根学Python(十六) 装饰器(逐步演化成装饰器)
- 一文读懂 JS 装饰器,这是一个会打扮的装饰器
- 装饰器与元数据反射(2)属与类性装饰器
- Python装饰器
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
区块链与人工智能:数字经济新时代
高航、俞学劢、王毛路 / 电子工业出版社 / 2018-7-23 / 80
《区块链与人工智能》是畅销书《区块链与新经济:数字货币2.0时代》全新修订升级版。本书是市场上为数不多的系统阐述区块链、人工智能技术与产业的入门级系统教程。从比特币到各类数字货币(代币),从基础原理到应用探讨,全景式呈现区块链与人工智能的发展脉络,既有历史的厚重感也有科技的未来感。本书的另一个亮点是系统整理了区块链创业地图,是一本关于区块链创业、应用、媒体的学习指南,以太坊创始人Vitalik专门......一起来看看 《区块链与人工智能:数字经济新时代》 这本书的介绍吧!