博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
装饰器
阅读量:6166 次
发布时间:2019-06-21

本文共 2212 字,大约阅读时间需要 7 分钟。

# def f1(): #     print(123) # def f1(): #     print(456) # f1()           结果 456 # def f1(): #     print('123') # def f2(xxx): #     xxx()       结果123 # f2(f1)
    # 定义函数,为调用,函数内部不执行     # 函数名 > 代指函数 ----------------------------------------------------------- def outer(func):     def inner(*args, **kwargs):      inner代表包装后的函数         print('before')         r = func(*args, **kwargs)    func()代表原函数         print('after')         return r     return inner # @ + 函数名 # 功能: #     1. 自动执行outer函数并且将其下面的函数名f1当作参数传递 #     2. 将outer函数的返回值,重复赋值给 f1 @outer def f1(arg):     print(arg)     return "132" @outer def f2(a1, a2):     print("F2") @outer def f3():     print("F3") -------------------------------------------------------------- 简单装饰器:
LOGIN_USER = {"is_login": False } def outer(func):     def inner(*args, **kwargs):         if LOGIN_USER['is_login']:             r = func()             return r         else:             print("请登录")     return inner @outer                    #验证登录(装饰器) def manager():     print("欢迎%s登录" % LOGIN_USER['current_user']) def login(user, pwd):     if user == "alex" and pwd == "123":         LOGIN_USER['is_login'] = True         LOGIN_USER['current_user'] = user         manager() def main():     while True:         inp = input("1,后台管理;2,登录")         if inp == '1':             manager()         elif inp == '2':             username = input("请输入用户名")             pwd = input("请输入密码")             login(username, pwd) ------------------------------------------------
USER_INFO = {}                        #双层装饰器 # USER_INFO['is_login'] = True # USER_INFO['user_type'] = 2 def check_login(func):           #登录验证     def inner(*args, **kwargs):         if USER_INFO.get('is_login', None):             ret = func(*args, **kwargs)             return ret         else:             print('请登录')     return inner def check_admin(func):         #权限验证     def inner():         if USER_INFO.get('user_type', None) == 2:             ret = func(1121121)             return ret         else:             print('无权限查看')     return inner @check_admin def index(a):     """     管理员的功能     :return:     """     print('Index') index()

转载于:https://www.cnblogs.com/zhaozhenguo666/p/5556129.html

你可能感兴趣的文章
HDU_1969_二分
查看>>
高等代数葵花宝典—白皮书
查看>>
一种简单的图像修复方法
查看>>
各种排序方法总结
查看>>
基于DobboX的SOA服务集群搭建
查看>>
C#设计模式之装饰者
查看>>
centos6.4双网卡实现共享上网
查看>>
[noip模拟20170921]模版题
查看>>
(转)iOS编程高性能之路-自动化编译脚本(2)
查看>>
Centos7下Yum安装PHP5.5,5.6,7.0
查看>>
python2脚本批量转成python3
查看>>
iOS8中添加的extensions总结(四)——Action扩展
查看>>
Visula Studio 2013/2015自定义快捷键
查看>>
Navicat_Preminum
查看>>
RabbitMQ快速入门
查看>>
响应式设计的一些问题
查看>>
文件上传
查看>>
ubuntu_virtualenv
查看>>
MySQL5.7在Windows下的安装
查看>>
精英的思维模式
查看>>