首页 > 其他 > 详细

2018.9.27作业

时间:2018-09-27 17:41:18      阅读:163      评论:0      收藏:0      [点我收藏+]
# 一:编写函数,(函数执行的时间是随机的)
# import time
#
#
# def timmer(func):
# def wrapper(*args, **kwargs):
# start = time.time()
# func(*args, **kwargs)
# stop = time.time()
# print(‘执行时间是%s‘ % (stop - start))
#
# return wrapper
#
#
# @timmer
# def exe():
# print(‘你瞅啥!‘)
#
#
# exe()
# 二:编写装饰器,为函数加上统计时间的功能
# import time
# def a(func):
# def inner():
# start = time.time()
# func()
# print(time.time() - start)
# return inner
# @a
# def index():
# print(‘welcome‘)
# time.sleep(2)
# index()
# 三:编写装饰器,为函数加上认证的功能
# flag = 0
#
#
# def login(func):
# def inner():
# global flag
# if flag == 0:
# username = ‘egon‘
# password = ‘123‘
# username_input = input(‘请输入用户名:‘).strip()
# pwd = input(‘请输入密码:‘).strip()
# if username_input == username and pwd == password:
# print(‘登录成功!‘)
# flag = 1
# else:
# print(‘用户名或密码错误!‘)
# if flag == 1:
# func()
# return inner
#
#
# @login
# def america():
# print(‘welcome to america‘)
# america()
# 四:编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件),要求登录成功一次,后续的函数都无需再输入用户名和密码
# 注意:从文件中读出字符串形式的字典,可以用eval(‘{"name":"egon","password":"123"}‘)转成字典格式
# flag = 0
#
#
# def login(func):
# def inner():
# global flag
# while flag == 0:
# with open(‘usermessage_db.txt‘, ‘r‘)as f:
# data = f.read()
# dic1 = eval(data)
# username_input = input(‘请输入用户名:‘).strip()
# pwd = input(‘请输入密码:‘).strip()
# if username_input in dic1 and pwd == dic1[username_input]:
# print(‘登录成功!‘)
# flag = 1
# else:
# print(‘用户名或密码错误!‘)
# if flag == 1:
# func()
# return inner
#
#
# def china():
# print(‘welcome to china‘)
#
#
# @login
# def america():
# print(‘welcome to america‘)
#
#
# @login
# def japan():
# print(‘welcome to japan‘)
# china()
# america()
# japan()
#
# 五:编写装饰器,为多个函数加上认证功能,要求登录成功一次,在超时时间内无需重复登录,超过了超时时间,则必须重新登录
# import time
# flag = 0
#
#
# def login(func):
# def inner():
# global flag
# while flag == 0:
# with open(‘usermessage_db.txt‘, ‘r‘)as f:
# data = f.read()
# dic1 = eval(data)
# username_input = input(‘请输入用户名:‘).strip()
# pwd = input(‘请输入密码:‘).strip()
# if username_input in dic1 and pwd == dic1[username_input]:
# print(‘登录成功!‘)
# flag = 1
# else:
# print(‘用户名或密码错误!‘)
# if flag == 1:
# func()
# return inner
#
#
# def wait(func):
# def inner():
# global flag
# if flag == 1:
# start = time.time()
# func()
# end = time.time()
# if end - start > 5:
# flag = 0
# print(‘登录已超时!‘)
# return inner
#
#
# def china():
# print(‘welcome to china‘)
#
#
# @login
# @wait
# def america():
# print(‘welcome to america‘)
#
#
# @login
# @wait
# def japan():
# print(‘welcome to japan‘)
# time.sleep(5)
#
# china()
# america()
# japan()
# america()
#
# 六:编写下载网页内容的函数,要求功能是:用户传入一个url,函数返回下载页面的结果
# import requests
#
#
# def down():
# url = input(‘请输入网址:‘)
# r = requests.get(url)
# r.raise_for_status()
# print(r.text)
# down()
# 七:为题目五编写装饰器,实现缓存网页内容的功能:
# 具体:实现下载的页面存放于文件中,如果文件内有值(文件大小不为0),就优先从文件中读取网页内容,否则,就去下载,然后存到文件中
# import requests
# import os
# url = ‘http://www.baidu.com‘
#
#
# def out(func):
# def inner(*args, **kwargs):
# if not os.path.exists(‘r.txt‘):
# with open(‘r.txt‘, ‘w‘):
# pass
# if os.path.getsize(‘r.txt‘):
# with open(‘r.txt‘, ‘r‘, encoding=‘utf-8‘) as f:
# res = f.read()
# else:
# res = func(*args, **kwargs)
# with open(‘r.txt‘, ‘w‘, encoding=‘utf-8‘) as f:
# f.write(res)
# print(‘文件缓存成功!‘)
# return inner
#
#
# @out
# def get(urls):
# return requests.get(urls).text
# get(url)
# 扩展功能:用户可以选择缓存介质/缓存引擎,针对不同的url,缓存到不同的文件中
# import requests
# import os
#
# settings = [‘file‘, ‘db‘, ‘redis‘]
# url = input(‘请输入网址:‘).strip()
# while 1:
# sets = input(‘请输入缓存介质(file/db/redis):‘)
# if sets not in settings:
# print(‘输入有误,请重试!‘)
# continue
# else:
# print(‘通过%s来缓存‘ % sets)
# break
#
#
# def out2(urls, setting=‘file‘):
# def out(func):
# def inner(*args, **kwargs):
# if sets == ‘file‘:
# if not os.path.exists(‘r.txt‘):
# print(‘文件不存在‘)
# with open(‘r.txt‘, ‘w‘):
# pass
# if os.path.getsize(‘r.txt‘):
# with open(‘r.txt‘, ‘r‘, encoding=‘utf-8‘) as f:
# res = f.read().strip()
# else:
# res = func(*args, **kwargs)
# with open(‘r.txt‘, ‘w‘, encoding=‘utf-8‘) as f:
# f.write(res)
# print(‘文件缓存成功!‘)
# elif sets == ‘db‘:
# print(‘db!没学!‘)
# elif sets == ‘redis‘:
# print(‘redis!没学!‘)
#
# return inner
#
# return out
#
#
# @out2(url, sets)
# def download(urls, setting):
# data = requests.get(urls).text
# return data
#
#
# download(url, sets)
# 八:还记得我们用函数对象的概念,制作一个函数字典的操作吗,来来来,我们有更高大上的做法,在文件开头声明一个空字典,然后在每个函数前加上装饰器,完成自动添加到字典的操作
# from functools import wraps
# dic1 = {}
#
#
# def out(func):
# @wraps(func)
# def inner(*args, **kwargs):
# func(*args, **kwargs)
# dic1[func.__name__] = func(*args, **kwargs)
# return inner
#
#
# @out
# def add(x, y):
# return x + y
#
#
# @out
# def sub(x, y):
# return x - y
#
# add(5, 6)
# print(dic1)
# sub(8, 2)
# print(dic1)
# 九 编写日志装饰器,实现功能如:一旦函数f1执行,则将消息2017-07-21 11:12:11 f1 run写入到日志文件中,日志文件路径可以指定
# 注意:时间格式的获取
# import time
# time.strftime(‘%Y-%m-%d %X‘)
# import time
# url = input(‘请输入需要写入的文件路径:‘).strip()
#
#
# def out(func):
# def inner(*args, **kwargs):
# func(*args, **kwargs)
# times = time.strftime(‘%Y-%m-%d %X‘)
# with open(url, ‘a‘)as f:
# f.write(‘%s %s run\n‘ % (times, func.__name__))
# return inner
#
#
# @out
# def f1():
# print(‘Hello world!‘)
#
#
# @out
# def f2():
# print(‘Hello Shanghai‘)
# f1()
# f2()
# f1()

2018.9.27作业

原文:https://www.cnblogs.com/DariusZhou/p/9714339.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!