感谢alex http://www.cnblogs.com/alex3714/articles/5765046.html
1、最简单的计算方法运行时间
import time
def timer(func):
"""计算一个方法运行的时间"""
def deco():
start_time = time.time()
func()
stop_time = time.time()
print("the func run time is %s" % (stop_time - start_time))
return deco
@timer
def test():
time.sleep(3)
print("in the test func")
test()
2. 一个简单的用户认证系统
#_*_coding:utf-8_*_
user_status = False #用户登录了就把这个改成True
def login(func): #把要执行的模块从这里传进来
def inner():#再定义一层函数
_username = "alex" #假装这是DB里存的用户信息
_password = "abc!23" #假装这是DB里存的用户信息
global user_status
if user_status == False:
username = input("user:")
password = input("pasword:")
if username == _username and password == _password:
print("welcome login....")
user_status = True
else:
print("wrong username or password!")
if user_status == True:
func() # 看这里看这里,只要验证通过了,就调用相应功能
return inner #用户调用login时,只会返回inner的内存地址,下次再调用时加上()才会执行inner函数
@login
def america():
print("----欧美专区----")
def japan():
print("----日韩专区----")
3. 一个通用版的用户认证系统
#_*_coding:utf-8_*_
user_status = False #用户登录了就把这个改成True
def login(auth_type): #把要执行的模块从这里传进来
def auth(func):
def inner(*args,**kwargs):#再定义一层函数
if auth_type == "qq":
_username = "alex" #假装这是DB里存的用户信息
_password = "abc!23" #假装这是DB里存的用户信息
global user_status
if user_status == False:
username = input("user:")
password = input("pasword:")
if username == _username and password == _password:
print("welcome login....")
user_status = True
else:
print("wrong username or password!")
if user_status == True:
return func(*args,**kwargs) # 看这里看这里,只要验证通过了,就调用相应功能
else:
print("only support qq ")
return inner #用户调用login时,只会返回inner的内存地址,下次再调用时加上()才会执行inner函数
return auth
def home():
print("---首页----")
@login('qq')
def america():
print("----欧美专区----")
def japan():
print("----日韩专区----")
@login('weibo')
def other(style):
'''
:param style: 喜欢看什么类型的,就传进来
:return:
'''
print("----其他专区----")
home()
# america = login(america) #你在这里相当于把america这个函数替换了
# 那用户调用时依然写
america()
# other("3p")