# 一:编写函数,(函数执行的时间是随机的)
import time
import random
# def foo():
# time.sleep(random.randrange(1,5))
# print('haha')
# foo()
# 二:编写装饰器,为函数加上统计时间的功能
# def timmer(func):
# def wrapper():
# start_time=time.time()
# func()
# stop_time=time.time()
# print('run time is %s'%(stop_time-start_time))
# return wrapper
# @timmer
# def foo():
# time.sleep(random.randrange(1,5))
# print('haha')
# foo()
# 三:编写装饰器,为函数加上认证的功能
# def auth(func):
# def deco():
# name=input('name: ')
# pwd=input('password: ')
# if name=='egon' and pwd=='123':
# print('login successful')
# func()
# else:
# print('login erro')
# return deco
# @auth
# def foo():
# time.sleep(random.randrange(1,5))
# print('haha')
# foo()
# 四:编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件),要求登录成功一次,后续的函数都无需再输入用户名和密码
# 注意:从文件中读出字符串形式的字典,可以用eval('{"name":"egon","password":"123"}')转成字典格式
# user_dic={
# 'egon':'123',
# 'alex':'alex3714',
# 'wupeiqi':'wu13',
# 'yuanhao':'123123'
# }
# with open('db.txt','w',encoding='utf-8') as f:
# f.write(str(user_dic))
# with open('db.txt','r',encoding='utf-8') as f:
# res=f.read()
# #print(res,type(res))#字符串类型
# user_dic=eval(res)
# #print(user_dic,type(user_dic))#字典类型
# db_path='db.txt'
# login_dic={
# 'user':None,
# 'status':False,
# }
# def auth(func):
# def wrapper(*args,**kwargs):
# if login_dic['user'] and login_dic['status']:
# res = func(*args, **kwargs)
# return res
# name=input('your name: ')
# password=input('your password: ')
# with open(db_path,'r',encoding='utf-8') as f:
# user_dic=eval(f.read())
# if name in user_dic and password == user_dic[name]:
# print('login ok')
# login_dic['user']=name
# login_dic['status']=True
# res=func(*args,**kwargs)
# return res
# else:
# print('login err')
# return wrapper
# @auth #auth(index)
# def index():
# print('welecome to index')
# @auth
# def home(name):
# print('welecome %s to home page' %name)
# index()
# home('egon')
# 五:编写下载网页内容的函数,要求功能是:用户传入一个url,函数返回下载页面的结果
# from urllib.request import urlopen
# def index(url):
# def get():
# return urlopen(url).read()
# return get
# python = index('https://www.python.org')
# print(python())
# 六:为题目五编写装饰器,实现缓存网页内容的功能:
# 具体:实现下载的页面存放于文件中,如果文件内有值(文件大小不为0),
# 就优先从文件中读取网页内容,否则,就去下载,然后存到文件中
# from urllib.request import urlopen
# import os
# cache_path=r'C:\Users\Administrator\PycharmProjects\python5期\day8\cache.txt'
# def make_cache(func):
# def wrapper(*args,**kwargs):
# if os.path.getsize(cache_path):
# #有缓存,文件不为空
# print('\033[45m=========>有缓存\033[0m')
# with open(cache_path,'rb') as f:
# res=f.read()
# else:
# res=func(*args,**kwargs) #下载
# with open(cache_path,'wb') as f: #制作缓存
# f.write(res)
# return res
# return wrapper
# @make_cache
# def get(url):
# return urlopen(url).read()
# print('================>first')
# print(get('https://www.python.org'))
# print('================>second')
# print(get('https://www.python.org'))
# print('================>third')
# print(get('https://www.python.org'))
# 七:还记得我们用函数对象的概念,制作一个函数字典的操作吗,
# 来来来,我们有更高大上的做法,在文件开头声明一个空字典,
# 然后在每个函数前加上装饰器,完成自动添加到字典的操作
# func_dic = {}
# def deco(key):
# def deco2(func):
# func_dic[key]=func
# return deco2
# @deco('f1')#@deco2 func1=deco2(func1)
# def func1():
# print("from f1")
# @deco('f2')
# def func2():
# print("from f2")
# @deco('f3')
# def func3():
# print("from f3")
# print(func_dic)
# while True:
# cmd=input('>>: ').strip()
# if cmd in func_dic:
# func_dic[cmd]()

最新文章

  1. oninput等表单事件
  2. Python3基础 for循环 遍历并输出一个字符串的列表
  3. nova分析(9)—— nova-novncproxy
  4. Hibernate从入门到精通(七)多对一单向关联映射
  5. “文件XXX正由另一进程使用,因此该进程无法访问此文件”
  6. java大全经典的书面采访
  7. C#使用NOPI导入Excel
  8. python (5分钟实现一个游戏的屏蔽敏感字系统,)
  9. mui 区域三级联动
  10. Charles模拟网络请求页面的网络超时测试
  11. s21day19 python笔记
  12. 如何在 Linux 中查看进程占用的端口号【转】
  13. CNN:人工智能之神经网络算法进阶优化,六种不同优化算法实现手写数字识别逐步提高,应用案例自动驾驶之捕捉并识别周围车牌号—Jason niu
  14. jsonServer 造个假的服务器传递数据接口 再用axois来请求数据
  15. Zabbix配置优化
  16. weblogica
  17. Prolog学习:基本概念
  18. 【学习笔记】--- 老男孩学Python,day8 知识点补充 join,列表不能循环删除,深浅copy
  19. CentOS6中OpenMP的运行时间或运行性能分析
  20. Strusts2笔记6--拦截器

热门文章

  1. TCP超时重传、滑动窗口、拥塞控制、快重传和快恢复
  2. 【转】python处理csv数据
  3. PHP实现懒加载
  4. HTML表单页面的运用
  5. boost数据结构tuple
  6. EF提供的3中查询方式
  7. 认识tornado(一)
  8. JAVA基础面试(五5)
  9. [Go语言]从Docker源码学习Go——main函数
  10. iOS ipad archives 时候 不显示icon