<每日一题>题目2:编写装饰器,为多个函数加上认证功能(用户账号和密码来源于文件)

  这里做个最简单的账号密码验证,主要为了实现装饰器同时对多个函数起作用

 1 FLAG = False    #加一个变量防止多次登录验证
 2 def wrapper(f):
 3     def inner(*args,**kwargs):
 4         ‘‘‘登录程序‘‘‘
 5         global FLAG #将FLAG变量设置成全局变量
 6         if FLAG:
 7             ret = f(*args, **kwargs)
 8             return ret
 9         else:
10             username = input(‘username:‘)
11             password = input(‘password:‘)
12             if username == ‘123‘ and password == ‘345‘:
13                 FLAG = True
14                 ret = f(*args,**kwargs)
15                 return ret
16             else:
17                 print(‘登录失败‘)
18     return inner
19
20 @wrapper
21 def func_1():
22     print(‘func1 is running!‘)
23
24 @wrapper
25 def func_2():
26     print(‘func2 is running!‘)
27
28 func_1()
29 func_2()

  运行结果:

1 username:123
2 password:345
3 func1 is running!
4 func2 is running!

原文地址:https://www.cnblogs.com/shuimohei/p/9680206.html

时间: 2024-10-08 07:26:21

<每日一题>题目2:编写装饰器,为多个函数加上认证功能(用户账号和密码来源于文件)的相关文章

编写装饰器, 为多个函数加上认证功能(用户的账户密码来源于文件, 用户有三次登录的机会), # 要求, 如果用户登录成功了, 后续就不需要再次登录了.

# flag = False # 一开始没有登录## def login(): # 函数:对功能或者动作的封装# global flag# username = input("请输入你的用户名:")# password = input("请输入你的密码:")## with open("userinfo",mode="r", encoding="utf-8") as f:# for line in f:# d

编写装饰器实现python请求错误重试功能

在做接口自动化测试的时候,总会遇到,因连接超时等错误导致,接口脚本失败. 官方给出的方法: max_retries=5 出错重试5次注意的是,这个只对DNS,连接错误进行重试. from requests.adapters import HTTPAdapter s = requests.Session() s.mount('http://',HTTPAdapter(max_retries=5)) s.mount('https://',HTTPAdapter(max_retries=5)) s.g

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 函数对象 命名空间与作用域 闭包函数 装饰器 迭代器 内置函数

一.函数对象 函数(Function)作为程序语言中不可或缺的一部分,但函数作为第一类对象(First-Class Object)却是 Python 函数的一大特性. 那到底什么是第一类对象(First-Class Object)呢? 在 Python 中万物皆为对象,函数也不例外,函数作为对象可以赋值给一个变量.可以作为元素添加到集合对象中.可作为参数值传递给其它函数,还可以当做函数的返回值,这些特性就是第一类对象所特有的. 1.函数身为一个对象,拥有对象模型的三个通用属性:id.类型.和值.

定义有参装饰器为被装饰函数添加认证功能,定义有参装饰器为被装饰函数添加认证功能,三次验证失败锁定用户

#需求:定义有参装饰器为被装饰函数添加认证功能,用户信息的来源可以是文件也可以是ldap # 三次验证失败锁定用户 1 def menu(): 2 #用户交互界面 3 user_name = input("请输入在用户名:") 4 password = input("请输入密码:") 5 return user_name,password #以元组形式返回值 6 ''' 7 alex1 1111 8 alex2 2222 9 egon3 3333 10 ''' 11

五、python函数、装饰器、内置函数、json及模块

一.递归调用 1.一个函数自己调用自己就是递归调用,最多一个函数递归调用自己999次,超过就会出错2.递归必须有一个明确的结束条件3.每次进入更深一层递归时,问题规模相比上次递归都应有所减少4.递归效率不高,少用递归 eg:def test1(): num = int(input('please enter a number:')) if num%2==0:#判断输入的数字是不是偶数 return True #如果是偶数的话,程序就退出了,返回true print('不是偶数请重新输入!') r

【Python 函数对象 命名空间与作用域 闭包函数 装饰器 迭代器 内置函数】

一.函数对象 函数(Function)作为程序语言中不可或缺的一部分,但函数作为第一类对象(First-Class Object)却是 Python 函数的一大特性. 那到底什么是第一类对象(First-Class Object)呢? 在 Python 中万物皆为对象,函数也不例外,函数作为对象可以赋值给一个变量.可以作为元素添加到集合对象中.可作为参数值传递给其它函数,还可以当做函数的返回值,这些特性就是第一类对象所特有的. 1.函数身为一个对象,拥有对象模型的三个通用属性:id.类型.和值.

装饰器,闭包,高阶函数,嵌套函数

高阶函数代码形式:(1.函数接收的参数是一个函数名 2.函数的返回值是一个函数名) def too(): print('from too') #高阶函数 def foo(): print('from foo') return too a = foo() a() def too(): print('from too') def foo(func): print('from foo') func() a = foo(too) 函数嵌套 定义一个函数,在该函数的代码块中在定义函数(可以一直定义下去)

Flask10 登录模块、表单框架、表单渲染、表单验证、bookie、请求之前钩子、g对象、编写装饰器

from flask import Flask from flask import request from flask import render_template from flask_wtf import CSRFProtect as WTF # 利用表单类去渲染模板时需要用到 from forms import LoginForm app = Flask(__name__) WTF(app) # 在app上注册一个 WTF (所有的flask插件都必须进行注册) app.config.f