Python(73)_装饰器函数练习_执行函数前登录验证

#-*-coding:utf-8-*-
import os
import time
from functools import wraps
‘‘‘
1、编写装饰器,为多个函数加上认证的功能(用户的账号和密码来源于文件)
2、要求登录一次,后续函数都无需输入用户名和密码
‘‘‘
FLAG = False
def login(func):
    def inner(*args,**kwargs):
        global FLAG
        ‘‘‘  登录程序 ‘‘‘

        if FLAG:
            ret = func(*args, **kwargs)
            return ret
        else:
            username = input("username :" )
            password = input(‘password :‘ )
            if username == ‘bowen‘ and password == ‘22222‘:
                FLAG = True
                ret = func(*args,**kwargs)
                return ret
            else:
                print(‘登录失败‘)
    return inner

@login
def shoplist_add():
    print("添加一个物品")
@login
def shoplist_del():
    print("删除一个物品")
shoplist_add()
shoplist_del()

原文地址:https://www.cnblogs.com/sunnybowen/p/10269467.html

时间: 2024-08-29 18:25:34

Python(73)_装饰器函数练习_执行函数前登录验证的相关文章

Python 学习笔记 - 装饰器

这一节了解了一些装饰器的简单使用. 首先来看一个预备知识,把一个函数当做参数,传入另外一个函数 比如说我传递outer(f1),我传入的是f1的内存地址,a=func()其实执行了f1()这个函数,并把返回值赋给了a,因此当我打印print(a),他会输出hee >>> def outer(func):     print(func)     a=func()     print(a) def f1():     print("aaa")     return &qu

Python(74)_编写装饰器,为多个函数加上记录调用功能,要求每次调用函数都将被调用的函数名写入文件

#-*-coding:utf-8-*- import os import time from functools import wraps ''' 1.编写装饰器,为多个函数加上记录调用功能,要求每次调用函数都将被调用的函数名写入文件 ''' def log(func): def inner(*args,**kwargs): with open('log1.txt','a',encoding='utf-8') as f: f.write(func.__name__+'\n') ret = fun

Python不归路_装饰器(一)

装饰器 装饰器 什么是装饰器?给现有函数添加新功能的函数,不更改现有函数源代码,现有函数调用方式.装饰器是由高阶函数和嵌套函数组成. 概括上面这句话的意思:1.装饰器 - - - > 函数 : 2.不更改现有函数源代码 3.不更改现有函数调用方式 4.装饰器对于函数来说是透明的(不产生任何影响) 装饰器运用的情景:在生产环境中,业务不能中断时,要给某些大量调用函数填加新功能时. 高阶函数  怎么样的函数才是高阶函数 1.把函数名作为实参传递给另外一个函数 2.返回值中包括函数 下面我们来感受下高

Python_装饰器,生成器_干货哦

import timeimport calendarimport os # 时间格式熟悉"""# 格式化成2016-03-20 11:45:39形式time01 = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())print()# 格式化成Sat Mar 28 22:24:24 2016形式print(time.strftime("%a %b %d %H:%M:%S %Y", ti

python3.5-day5_迭代器_生成器_装饰器_模块

笔者QQ 360212316 迭代器&生成器 生成器: 一个函数调用返回一个迭代器,那这个函数叫做生成器,如果函数中包含yield语法,那么这个函数就会变成生成器 生成器的特点: 1.生成器必须从前往后一次访问,不能跳着取 2.生成器只记录访问的数据,其他数据释放 3.生成器的作用就是预想可能用到那么多的数据 生成器的两种方式: 方式一: data = (x * 2 for x in range(5)) # 获取结果的两种方式 print(data.__next__()) print(next(

python之路--装饰器函数

(一)装饰器的形成过程 装饰器的本质是闭包函数的一种应用,装饰器是用来装饰函数的,在不修改原函数及其调用方式的情况下对原函数功能进行拓展. #简单的无参函数装饰器 import time def timmer(func): def inner(): start = time.time() func() end = time.time() print(end -start) return inner @timmer#语法糖 def hahaha(): time.sleep(2)#停止时间的一种用法

Python深入05 装饰器

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 装饰器(decorator)是一种高级Python语法.装饰器可以对一个函数.方法或者类进行加工.在Python中,我们有多种方法对函数和类进行加工,比如在Python闭包中,我们见到函数对象作为某一个函数的返回结果.相对于其它方式,装饰器语法简单,代码可读性高.因此,装饰器在Python项目中有广泛的应用. 装饰器最早在Python 2.5中出现,它最初被用于加工函数和方法这样

python学习笔记--装饰器

1.首先是一个很无聊的函数,实现了两个数的加法运算: def f(x,y): print x+y f(2,3) 输出结果也ok 5 2.可是这时候我们感觉输出结果太单一了点,想让代码的输出多一点看起来不这么单调: def showInfo(fun): def wrap(x,y): print "The function before" func(x,y) print "The function after" return wrap def f(x,y): print

1.16 Python基础知识 - 装饰器

Python中的装饰器就是函数,作用就是包装其他函数,为他们起到修饰作用.在不修改源代码的情况下,为这些函数额外添加一些功能,像日志记录,性能测试等.一个函数可以使用多个装饰器,产生的结果与装饰器的位置顺序有关. 装饰器基本形式: @装饰器1 def 函数1: 函数体 相当于:==> 函数1 = 装饰器1(函数1) 装饰器特点: 1.不修改源代码的调用方式 2.不修改源代码内容 3.装饰器有高阶函数与递归函数相融合的特点 多个装饰器修饰,示例: @foo @spam def bar():pass