# -*- coding:utf-8 -*-import timeimport apiimport auth''' Python 装饰器 AOP 的编程思想 '''# 对修改是封闭的,对扩展是开放的# 当需求变更了,尽量不去改方法,类内部的实现# 可以接受定义是的复杂,只要调用时足够简单(绝对不能接受调用的复杂)def print_current_time(func): print(time.time()) func()# print_current_time(f1)# print_current_time(f2)def decorator(func): def wrapper(*args, **kw): print(time.time()) func(*args, **kw) return wrapper@decoratordef f1(func_name): print("function name is: " + func_name)@decoratordef f2(func_name1, func_name2): print("function name is: " + func_name1) print("function name is: " + func_name2)@decoratordef f3(func_name1, func_name2, **kw): print("function name is: " + func_name1) print("function name is: " + func_name2) print(kw)# 调用f1("test func")f2('test func1', 'test fun2')f3('test func1', 'a', a=1, b=2, c='123')@api.route('./get', methods=['GEt'])def test_java_script_http(): p = request.args.get('name') return p, 200@api.route('./get', methods=['GEt'])@auth.login_requireddef get_psw(): p = request.args.get('psw') r = generate_password_hash(p) return 'aaaaaa', 200