day17 作业
一、编写函数(函数执行的时间用time.sleep(n)模拟)
import time
def time_sleep(n):
print("函数开始")
time.sleep(n)
print("函数结束")
time_sleep(1)
二、编写装饰器,为函数加上统计时间的功能
import time
def timmer(func):
def outter(*args,**kwargs):
start = time.time()
func(*args,**kwargs)
stop = time.time()
print(stop - start)
return outter
@timmer
def time_sleep(n):
print("函数开始")
time.sleep(n)
print("函数结束")
time_sleep(1)
三、编写装饰器,为函数加上认证的功能
def login(func):
"""登录装饰器"""
def wrapper(*args,**kwargs):
name_inp = input("请输入你的用户名:")
pwd_inp = input("请输入你的密码:")
with open("a.txt","r",encoding="utf-8") as f:
for line in f :
name,password = line.strip().split(":")
if name ==name_inp and password == pwd_inp:
print("登录成功")
func(*args,**kwargs)
return
else:
print("输入错误")
return wrapper
@login
def eat(n):
"""吃东西"""
print(f"吃{n}吨屎")
eat(100)
四、编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件),要求登录成功一次,后续的函数都无需再输入用户名和密码
注意:从文件中读出字符串形式的字典,可以用eval('{"name":"egon","password":"123"}')转成字典格式
is_login = False
def judge_login(login_user):
def login(func):
def wrapper(*args,**kwargs):
if not login_user:
name_inp = input("请输入你的用户名:")
pwd_inp = input("请输入你的密码:")
with open("a.txt","r",encoding="utf-8")as f :
for line in f:
name,pwd = line.strip().split(":")
if name == name_inp and pwd_inp == pwd:
print("登录成功")
func(*args,**kwargs)
global is_login
is_login = True
break
else:
print("登录失败")
else:
func(*args,**kwargs)
return wrapper
return login
@judge_login(is_login)
def eat_chicken(n):
'''吃鸡腿'''
print(f"吃{n}个鸡腿")
eat_chicken(1)
@judge_login(is_login)
def eat_chocolates(m):
'''吃巧克力'''
print(f"吃{m}个巧克力")
eat_chocolates(2)
五、编写装饰器,为多个函数加上认证功能,要求登录成功一次,在超时时间内无需重复登录,超过了超时时间,则必须重新登录
import time
user_list={"name" : None, "password":None ,"now":None,"timeout":5}
def login(func):
def wrapper(*args,**kwargs):
if user_list['name']:
timeout = time.time() - user_list['timeout']
if timeout < user_list['now']:
return func(*args, **kwargs)
else:
print("已超时")
name_inp = input("请输入你的用户名:")
pwd_inp = input("请输入你的密码:")
if name_inp == "hz" and pwd_inp == "123":
print("登录成功")
user_list["name"]=name_inp
user_list["password"]=pwd_inp
user_list["now"]=time.time()
func(*args,**kwargs)
else:
print("登录失败")
return wrapper
@login
def eat_chicken(n):
'''吃鸡腿'''
time.sleep(2)
print(f"吃{n}个鸡腿")
eat_chicken(1)
@login
def eat_chocolates(m):
'''吃巧克力'''
print(f"吃{m}个巧克力")
time.sleep(3)
eat_chocolates(2)
@login
def eat_pig(n):
print(f"吃{n}头猪")
eat_pig(1000)
day17 作业的更多相关文章
- 老男孩Day17作业:后台管理平台编辑表格
一.作业需求: 后台管理平台 ,编辑表格: 1. 非编辑模式: 可对每行进行选择: 反选: 取消选择 2. 编辑模式: 进入编辑模式时如果行被选中,则被选中的行万变为可编辑状态,未选中的不改变 退出编 ...
- python基础一 day17 作业
# 3.用map来处理字符串列表,把列表中所有人都变成sb,比方alex_sbname=['alex','wupeiqi','yuanhao','nezha']# def func(item):# r ...
- Day17作业及默写
正则表达式练习 1.匹配一篇英文文章的标题 类似 The Voice Of China ([A-Z][a-z]*)( [A-Z][a-z]*)* 2.匹配一个网址 https://www.baidu. ...
- day17作业
1.java.util 2.队列先进先出,栈堆先进后出 3.链表 4.LinkedList 5.TreeSet 6.Comparable 7.Map 8.next() 1.AC 2.A ...
- 【转】django 正则URL 匹配
django 正则URL 匹配 转自:https://www.cnblogs.com/chenkeven/articles/9305260.html 一.引子 在day17 作业中,我们查看主机详细 ...
- python27期day17:re、logging日志模块、作业。
1.re: 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则.(在Python中)它内嵌在Python中,并通过 re 模 ...
- python 作业
Linux day01 计算机硬件知识整理 作业要求:整理博客,内容如下 编程语言的作用及与操作系统和硬件的关系 应用程序->操作系统->硬件 cpu->内存->磁盘 cpu与 ...
- python10作业思路及源码:类Fabric主机管理程序开发(仅供参考)
类Fabric主机管理程序开发 一,作业要求 1, 运行程序列出主机组或者主机列表(已完成) 2,选择指定主机或主机组(已完成) 3,选择主机或主机组传送文件(上传/下载)(已完成) 4,充分使用多线 ...
- SQLServer2005创建定时作业任务
SQLServer定时作业任务:即数据库自动按照定时执行的作业任务,具有周期性不需要人工干预的特点 创建步骤:(使用最高权限的账户登录--sa) 一.启动SQL Server代理(SQL Server ...
随机推荐
- Flutter 中 GestureDetector 的使用误区
在实际开发中,我们通常需要实现某个组件的更多点击事件.比如:原生的RaisedButton组件是无法响应诸如拖拽或是按下.抬起等细化的动作,它只有一个onPressed()方法来表示.当我们想实现这些 ...
- 微信小程序实现连续扫码功能(uniapp)
注:本文使用的是 uniapp 语法. 微信小程序提供了扫码API:wx.scanCode,但它只能扫一次码,想要实现连续扫码,需要借用 camera 组件.camera 组件不仅能拍照,还具有扫码功 ...
- win10系统下office 2019激活
1.新建一个文本文件,创建批处理文件office.bat @echo off (cd /d "%~dp0")&&(NET FILE||(powershell sta ...
- <VCC笔记> Assumption
接下来是第二种注释语句类型Assumption.语法_(Assume E), 这个表达式是让VCC在接下来的额推理中,无视表达式E, 直接认可表达式E. 例: int x, y; _(assume x ...
- JavaScript 定时器 取消定时器
感谢:链接(视频讲解很清晰) 定时器:作用主要是一定时间间隔后,做出相关的变化,例如图片轮播. 目录 两种定时器的使用 两种定时器区别 取消定时器的方法 两种定时器的使用: 方法一:setTimeou ...
- Flume-0.9.4和Hbase-0.96整合
这几天由于项目的需要,需要将Flume收集到的日志插入到Hbase中,有人说,这不很简单么?Flume里面自带了Hbase sink,可以直接调用啊,还用说么?是的,我在本博客的<Flume-1 ...
- 【Flutter实战】图片组件及四大案例
老孟导读:大家好,这是[Flutter实战]系列文章的第三篇,这一篇讲解图片组件,Image有很多高级用法,希望对您有所帮助. 图片组件是Flutter基础组件之一,和文本组件一样必不可少.图片组件包 ...
- redis配置文件中slave-serve-stale-data的解释
redis.conf文件中可以看到slave-serve-stale-data这个参数,作用是什么? 原文解释: # When a slave loses its connection with th ...
- Elasticsearch修改分词器以及自定义分词器
Elasticsearch修改分词器以及自定义分词器 参考博客:https://blog.csdn.net/shuimofengyang/article/details/88973597
- centos下面基本的linux命令操作
参考视频: 1.如何打开命令窗口 鼠标点击右键,选择open Terminal就可以打开命令行窗口了. 现在我们可以调整这个窗口的大小,增大窗口大小使用ctrl+shif+加号,缩小窗口ctrl+减号 ...