内容简介: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()
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
创业的艺术2.0
〔美〕盖伊·川崎 / 刘悦、段歆玥 / 译言·东西文库/电子工业出版社 / 2016-9 / 68
“创业者导师”——盖伊•川崎的《创业的艺术2.0》被阿丽亚娜•赫芬顿评为“终极的创业手册”。无论您是企业家、小企业主、企业开拓者还是非盈利组织的领导人,都可以让你的产品、服务或理念获得成功。 盖伊选取了不用角度,探索前十年商界的巨大变化,并寻求解决之道。曾经所向披靡的市场巨头深陷水深火热之中,社交媒体也取代了人际关系和广告,成为营销推广的主要渠道。众筹也成为广大投资者的可行之举。“云”更是每......一起来看看 《创业的艺术2.0》 这本书的介绍吧!