user_list=[
{'name':"alex","pwd":''},
{'name':'tang','pwd':''},
{'name':'sb','pwd':''}
]
current_dict={'username':None,'login':False}
def auth(auth_type):
def auth_func(func):
def wrapper(*args,**kwargs):
print("认证类型", auth_type) if auth_type == 'filedb': if current_dict['username'] and current_dict['login']:#判断用户的登陆状态
res = func(*args, **kwargs)
return res
username=input("用户名").strip()#strip()函数去除字符串两边的空格
password=input('密码').strip() for item in user_list:
if username==item['name'] and password==item['pwd']:
current_dict['username']=username#改变用户的登陆状态,改变后就不需要每次都进行输入
current_dict['login']=True
res=func(*args,**kwargs)
return res
else:
print("用户名或密码错误")
elif auth_type=="ldap":
print("hahhaha") return wrapper return auth_func @auth(auth_type="filedb")#auth_func=auth(auth_type="filedb")--->@auth_func 附加了一个auth_type---->index=auth_func(index)
def index():
print("欢迎来到京东") @auth(auth_type='')
def home(name):
print("我的个人中心%s"%(name)) @auth(auth_type='filedb')
def shop_car(name):
print("%s我的购物车"%(name)) print("after---->",current_dict)
index()
print('after---->',current_dict)
home("alex")
shop_car("产品经理") # dict_user={"username":None,"login":False}
#
# def auth_func(func):
# def wrapper(*args,**kwargs):
# if dict_user['username'] and dict_user['login']:
# res = func(*args, **kwargs)
# return res
# username=input("用户名").strip()#strip()函数去除字符串两边的空格
# password=input('密码').strip()
# if username=="sb" and password=="123":
# dict_user['username']=username
# dict_user['login']=True
# res=func(*args,**kwargs)
# return res
# else:
# print("用户名或密码错误")
#
# return wrapper
#
#
#
#
#
#
# @auth_func
# def index():
# print("欢迎来到京东")
#
# @auth_func
# def home(name):
# print("我的个人中心%s"%(name))
#
# @auth_func
# def shop_car(name):
# print("%s我的购物车"%(name))
#
# index()
# home("alex")
# shop_car("产品经理")
#
# # a="123"
# b='1'
# v=b.join(a)##b join a
# print(v)

python-验证功能的装饰器示例的更多相关文章

  1. Python中利用函数装饰器实现备忘功能

    Python中利用函数装饰器实现备忘功能 这篇文章主要介绍了Python中利用函数装饰器实现备忘功能,同时还降到了利用装饰器来检查函数的递归.确保参数传递的正确,需要的朋友可以参考下   " ...

  2. python 各种装饰器示例(python3)

    参考网址: Python中的各种装饰器详解_python_脚本之家http://www.jb51.net/article/63892.htm 一.函数式装饰器: 1.装饰器无参数,被装饰对象无参数 d ...

  3. python函数式编程之装饰器(一)

    1.开放封闭原则 简单来说,就是对扩展开放,对修改封闭 在面向对象的编程方式中,经常会定义各种函数. 一个函数的使用分为定义阶段和使用阶段,一个函数定义完成以后,可能会在很多位置被调用 这意味着如果函 ...

  4. Python之迭代器、装饰器、软件开发规范

    本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 1.列表生成式,迭代器&生成器 列表生成式 孩子,我现在有个需 ...

  5. python之闭包与装饰器

    python闭包与装饰器 闭包 在函数内部定义的函数包含对外部的作用域,而不是全局作用域名字的引用,这样的函数叫做闭包函数. 示例: #-------------------------------- ...

  6. python基础-函数之装饰器、迭代器与生成器

    1. 函数嵌套 1.1 函数嵌套调用 函数的嵌套调用:在调用一个函数的过程中,又调用了其他函数 def bar(): print("from in the bar.") def f ...

  7. python基础——8(装饰器)

    一.nonlocal关键字 def outer(): num = 0 def inner(): # 如果想在被嵌套的函数中修改外部函数变量(名字)的值 nonlocal num # 将 L 与 E(E ...

  8. Python函数编程——闭包和装饰器

    Python函数编程--闭包和装饰器 一.闭包 关于闭包,即函数定义和函数表达式位于另一个函数的函数体内(嵌套函数).而且,这些内部函数可以访问它们所在的外部函数中声明的所有局部变量.参数.当其中一个 ...

  9. Python函数篇:装饰器

    装饰器本质上是一个函数,该函数用来处理其他函数,它可以让其他函数在不需要修改代码的前提下增加额外的功能,装饰器的返回值也是一个函数对象.它经常用于有切面需求的场景,比如:插入日志.性能测试.事务处理. ...

随机推荐

  1. 20181022-JSP 开发环境搭建

    JSP 开发环境搭建 JSP开发环境是您用来开发.测试和运行JSP程序的地方. 本节将会带您搭建JSP开发环境,具体包括以下几个步骤. 配置Java开发工具(JDK) 这一步涉及Java SDK的下载 ...

  2. rman备份/恢复

    全备脚本 cat rman_full.sh #!/bin/bash export ORACLE_BASE=/opt/oracle export ORACLE_HOME=$ORACLE_BASE/pro ...

  3. Model 层

    package com.test.mvp.mvpdemo.mvp.v1.model; import com.test.mvp.mvpdemo.mvp.v1.MainContract; import o ...

  4. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_07 缓冲流_2_BufferedOutputStream_字节缓冲

    子类 继承父类,这些方法都可以使用 必须写上flush,刷新数据数据才能写入到文件内

  5. python库文件文档的查看

    python库文件文档的查看 第一步:cmd窗口输入:python -m pydoc -p 4567,后台运行 第二步:浏览器中打开http://localhost:4567/

  6. delphi中如何实现文件的复制?

    http://zhidao.baidu.com/link?url=nyAzCpeXAbaT8M3qqAePCF1Zr7q-oK4hpAUNIaRYpHcbmIwYsLr1TXoTt8759HtR1EB ...

  7. OO第三单元单元总结

    目录 JML知识梳理 部署JMLUnitNG/JMLUnit 按照作业梳理自己的架构设计,并特别分析迭代中对架构的重构 按照作业分析代码实现的bug和修复情况 阐述对规格撰写和理解上的心得体会 JML ...

  8. 工具 - VNC

    安装 ubuntu下vnc客户端的安装命令sudo apt-get install xtightvncviewer 重置密码 cd /root/.vnc/ rm -rf passwd vncserve ...

  9. 应用安全-Web安全-CSRF攻防整理

    原理 - 登录受信任网站A,并在本地生成Cookie.在不登出A的情况下,访问危险网站B. #csrfdemo.php <?php $data = json_decode(file_get_co ...

  10. Webpack基础学习

    Webpack基础学习:https://segmentfault.com/a/1190000008853009