python-验证功能的装饰器示例
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-验证功能的装饰器示例的更多相关文章
- Python中利用函数装饰器实现备忘功能
Python中利用函数装饰器实现备忘功能 这篇文章主要介绍了Python中利用函数装饰器实现备忘功能,同时还降到了利用装饰器来检查函数的递归.确保参数传递的正确,需要的朋友可以参考下 " ...
- python 各种装饰器示例(python3)
参考网址: Python中的各种装饰器详解_python_脚本之家http://www.jb51.net/article/63892.htm 一.函数式装饰器: 1.装饰器无参数,被装饰对象无参数 d ...
- python函数式编程之装饰器(一)
1.开放封闭原则 简单来说,就是对扩展开放,对修改封闭 在面向对象的编程方式中,经常会定义各种函数. 一个函数的使用分为定义阶段和使用阶段,一个函数定义完成以后,可能会在很多位置被调用 这意味着如果函 ...
- Python之迭代器、装饰器、软件开发规范
本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 1.列表生成式,迭代器&生成器 列表生成式 孩子,我现在有个需 ...
- python之闭包与装饰器
python闭包与装饰器 闭包 在函数内部定义的函数包含对外部的作用域,而不是全局作用域名字的引用,这样的函数叫做闭包函数. 示例: #-------------------------------- ...
- python基础-函数之装饰器、迭代器与生成器
1. 函数嵌套 1.1 函数嵌套调用 函数的嵌套调用:在调用一个函数的过程中,又调用了其他函数 def bar(): print("from in the bar.") def f ...
- python基础——8(装饰器)
一.nonlocal关键字 def outer(): num = 0 def inner(): # 如果想在被嵌套的函数中修改外部函数变量(名字)的值 nonlocal num # 将 L 与 E(E ...
- Python函数编程——闭包和装饰器
Python函数编程--闭包和装饰器 一.闭包 关于闭包,即函数定义和函数表达式位于另一个函数的函数体内(嵌套函数).而且,这些内部函数可以访问它们所在的外部函数中声明的所有局部变量.参数.当其中一个 ...
- Python函数篇:装饰器
装饰器本质上是一个函数,该函数用来处理其他函数,它可以让其他函数在不需要修改代码的前提下增加额外的功能,装饰器的返回值也是一个函数对象.它经常用于有切面需求的场景,比如:插入日志.性能测试.事务处理. ...
随机推荐
- hdu_1231(最大连续子序列)
http://acm.hdu.edu.cn/showproblem.php?pid=1231 最长公共子序列: 方法1:暴力枚举所有区间的连续和,维护最大和 复杂度O(n^3)-->因为求区间和 ...
- div的文字倾斜
最近要写一个页面,需要一排文字是倾斜的,我就写了一下 <div class="qingx">倾斜导航</div> div.qingx{ -moz-trans ...
- Solr搜索引擎基础
搜索引擎是指一个庞大的互联网资源数据库,如网页,新闻组,程序,图像等.它有助于在万维网上定位信息. 用户可以通过以关键字或短语的形式将查询传递到搜索引擎中来搜索信息. 搜索引擎然后搜索其数据库并向用户 ...
- bootstrap动态调用select下拉框
html代码: <label for="classify" class="col-sm-2 control-label">填报部门:</lab ...
- <foreach></foreach>标签
当传入参数为数组或者集合时需要通过<foreach></foreach>标签进行遍历 1.首先在po类中定义一个集合或者数组 比如 private List<Intege ...
- Windows下使用python3 + selenium实现网页自动填表功能
本文由博主(SunboyL)原创,转载请注明出处:https://www.cnblogs.com/SunboyL/p/11563345.html 因为工作原因,需要将xls文件的数据录入到网上.因为数 ...
- 最新版本的JDK安装和配置(Java SE 10.0.2)
1.废话少说,要么百度JDK,要么直接点传送门http://www.oracle.com/technetwork/java/javase/downloads/index.html.这里需要说的JDK包 ...
- linux中表示系统信息如cpu mem disk等内容都在 /proc
linux中表示系统信息的 内容都在 /proc 要查看系统的任何信息, 如cpu mem 磁盘等等, 都在 /proc下, 如: cpuinfo ,meminfo diskstatus 等等
- Powershell&TFS_Part 1
目录 目录 前言 TFS 对象模型 Powershell Powershell面向对象 Powershell默认会在PC中设置执行脚本权限 调试脚本 断点 Step Microsoft Visual ...
- vi, Java, Ant, Junit自学报告 - 实训week1
vi, Java, Ant, Junit自学报告 2017软件工程实训 15331023 陈康怡 vi Vi是linux系统的标准文本编辑器,采用指令的方式进行操作,此处仅记录部分常用的指令. vi模 ...