Python装饰器
装饰器定义及功能:
1,不改变被装饰程序的源代码和调用方式
2.为一个应用增加新功能
__author__ = '12711'
#-*- coding:utf-8 -*-
#为函数增加一个显示程序运行时间的功能
'''import time
def zsq(fun):
def deco(*args,**kwargs):
stat_time=time.time()
res=fun(*args,**kwargs)
stop_time=time.time()
print("程序运行时间是%s"%(stop_time-stat_time))
return res
return deco
@zsq #tens1=zsq(tens1)
def tens1():
time.sleep(3)
print("tens1运行")
@zsq
def tens2(name):
print(name)
return 'ni hao'
tens1()
print(tens2('hjd'))
'''
#为函数增加一个验证用户名密码的功能
'''
name='hjd'
mima='hjd123'
def das(funs):
def deco(*args,**kwargs):
Name=input("输入用户名")
Mima=input("输入密码")
if Name==name and Mima==mima:
res=funs(*args,**kwargs)
return res
else:
exit("密码或者用户名输入错误")
return
return deco
def info():
print('欢迎进入info')
@das
def home():
print("欢迎进入home")
@das
def bbs():
print("欢迎进入bbs")
info()
home()
bbs()
'''
#为函数增加一个不同验证密码用户名的功能
Name,Mima='hjd','hjd123'
def yanzhen(init_y):
def doco(funs):
def Yz(*args,**kwargs):
if init_y=='bendi':
name=input('shu ru tong hu ming:')
mima=input('shu ru mi ma')
if name==Name and mima==Mima:
rse=funs()
return rse
else:
exit('shu ru cuo wu')
elif init_y=='wanl':
print('yan zheng wangluo')
return Yz
return doco
def info():
print('wecome to info')
@yanzhen(init_y='bendi')
def init():
print('wecome to init')
@yanzhen(init_y='wanl')
def bbs():
print('wecome to bbs')
info()
init()
bbs()