IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python学习四十七(装饰器) -> 正文阅读

[Python知识库]python学习四十七(装饰器)

装饰器

1.函数A是作为参数出现的,函数B就接收了函数A作为参数
2.要有闭包的特点出现

格式如下:

#定义一个装饰器
def decorator(func):
    a=100

    def wrapper():
        print('--------->111111')
        func()
        print('--------->222222')
        print(a)
    return wrapper
#使用装饰器
@decorator
def house():
    print('我是毛坯房...')


house()

结果如下,可以不改变函数名,调用装饰器。

--------->111111
我是毛坯房...
--------->222222
100

万能装饰器

def decorator(func):
    a=100
    print('wwrapper')
    def wrapper():
        print('--------->111111')
        func()
        print('--------->222222')
        print(a)
    print('1111')
    return wrapper
#使用装饰器
@decorator
def house():
    print('我是毛坯房...')
 #1.house称作被装饰函数,2.将装饰函数作为参数传给装饰器decorater 3.只要装饰,就必须执行装饰器函数,就会打印

带参数的装饰器

#装饰器带参数,装饰器需要三层
def outer(a):
    def decorate(func):
        def wrapper(*args,**kwargs):
            func(*args)
            print("----->铺地砖..{}".format(a))

        return wrapper
    return decorate

@outer(10)
def house(time):
    print('我{}日期拿到房子的要是,是毛坯房...'.format(time))

house('2019-6-12')

应用

#开发 登录验证
import time


islogin = False

#定义一个登录函数
def login():
    username = input('输入用户名:')
    password = input('输入密码:')
    if username=='admin'and password=='123456':
        return True
    else:
        return False


#定义一个装饰器进行付款验证
def login_required(func):
    def wrapper(*args,**kwargs):
        global islogin
        print('----------付款----------')
        #验证用户是否登录
        if islogin:
            func(*args,**kwargs)
        else:
            #跳转登录页面
            print('用户没有登录,不能付款')
            islogin = login()
            print('result',islogin)

    return wrapper

@login_required
def pay(money):
    print('正在付款,付款金额是:{}'.format(money))
    print('付款中...')
    time.sleep(2)
    print('付款完成')


pay(10000)
pay(1000)
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-09-03 11:50:39  更:2021-09-03 11:51:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 12:16:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码