首页 > 编程语言 >python之装饰器

python之装饰器

时间:2022-09-25 21:44:51浏览次数:57  
标签:fn python verify inner print login 装饰 def

装饰器:=====> 要求记住最后的结论

装饰器本质上是一个闭包

作用:

1在不改变原有函数调用的情况下. 给函数增加新的功能.

2直白: 可以在函数前后添加新功能, 但是不改原来的代码

应用场景:

在用户登录的地方, 日志.

通用装饰器的写法:

 def wrapper(fn):   wrapper: 装饰器, fn: 目标函数
            def inner(*args, **kwargs):
                # 在目标函数执行之前.....
                ret = fn(*args, **kwargs)   #   执行目标函数
                # 在目标函数执行之后.....
                return ret
            return inner     千万别加()

        @wrapper
        def target():
            pass

        target()  #  =>  inner()

    一个函数可以被多个装饰器装饰.
    @wrapper1
    @wrapper2
    def target():
        print('我是目标')

    规则和规律 wrapper1 wrapper2 TARGET wrapper2 wrapper1  

案例:

login_flag = False

def login_verify(fn):
    def inner(*args, **kwargs):
        global login_flag
        if login_flag == False:  # ????
            # 这里完成登录校验
            print('还未完成用户登录操作')
            while 1:
                username = input(">>>")
                password = input(">>>")
                if username == "admin" and password == "123":
                    print("登录成功")
                    login_flag = True
                    break
                else:
                    print("登录失败, 用户名或密码错误")
        ret = fn(*args, **kwargs)  # 后续程序的执行
        return ret
    return inner




@login_verify
def add():
    print("添加员工信息")

@login_verify
def delete():
    print("删除信息")

@login_verify
def upd():
    print("修改信息")

@login_verify
def search():
    print("查询员工信息")


add()
upd()
delete()
search()

标签:fn,python,verify,inner,print,login,装饰,def
From: https://www.cnblogs.com/pdxt666/p/16729058.html

相关文章

  • 【可视化大屏教程】用Python开发智慧城市数据分析大屏!
    目录一、开发背景二、讲解代码2.1大标题+背景图2.2各区县交通事故统计图-系列柱形图2.3图书馆建设率-水球图2.4当年城市空气质量aqi指数-面积图2.5近7年人均生产总值......
  • python之闭包
    闭包:本质,内层函数对外层函数的局部变量的使用.此时内层函数被称为闭包函数1.可以让一个变量常驻与内存2.可以避免全局变量被修改案例:deffunc():a=10......
  • mitudesk的python日记 异常
    一、python中的异常1.BaseException:这个异常类型就是所有异常的基类,在自定义异常类时也需要去继承这个类,当使用它作为异常捕获的类型时就会自动捕获所有异常。不知道是啥......
  • python基础
    博客目录基础python前言pycharm安装虚拟环境介绍python入门......
  • Python核心编程 pdf
    高清扫描版下载链接:https://pan.baidu.com/s/1Gh4hoOS2-5RDSryA_mLqng点击这里获取提取码 ......
  • Python开发技术详解 pdf
    高清扫描版下载链接:https://pan.baidu.com/s/1q4AzavUAb53C6nu490Wozw点击这里获取提取码 ......
  • 关于 python 脚本 引用
    ##模块导入、加载python中一个py文件就是一个模块。一个package或者一个文件夹就是一个包。当前包中有哪些可用的属性可以通过dir()方法来查看。###dir()```pythonimport......
  • Python依赖管理及打包利器-Poetry
    简介Poetry是一个包管理和打包的工具。在Python中,对于初学者来说,打包系统和依赖管理是非常复杂和难懂的。即使对于经验丰富的开发者,一个项目总是要同时创建多个文件:......
  • python安装包的八种方法
    1.使用easy_installeasy_install这应该是最古老的包安装方式了,目前基本没有人使用了。下面是easy_install的一些安装示例# 通过包名,从PyPI寻找最新版本,自动下载、......
  • 拉格朗日插值原理及实现(Python)
    拉格朗日插值原理及实现(Python)目录拉格朗日插值原理及实现(Python)一.前言二.3种形式的Lagrange插值函数推导1.原始形态的Lagrange插值2.第一形式Lagrange插值3.第二形......