1. # 一:编写函数,(函数执行的时间是随机的)
  2. import time
  3. import random
  4. # def foo():
  5. # time.sleep(random.randrange(1,5))
  6. # print('haha')
  7. # foo()
  8. # 二:编写装饰器,为函数加上统计时间的功能
  9. # def timmer(func):
  10. # def wrapper():
  11. # start_time=time.time()
  12. # func()
  13. # stop_time=time.time()
  14. # print('run time is %s'%(stop_time-start_time))
  15. # return wrapper
  16. # @timmer
  17. # def foo():
  18. # time.sleep(random.randrange(1,5))
  19. # print('haha')
  20. # foo()
  21. # 三:编写装饰器,为函数加上认证的功能
  22. # def auth(func):
  23. # def deco():
  24. # name=input('name: ')
  25. # pwd=input('password: ')
  26. # if name=='egon' and pwd=='123':
  27. # print('login successful')
  28. # func()
  29. # else:
  30. # print('login erro')
  31. # return deco
  32. # @auth
  33. # def foo():
  34. # time.sleep(random.randrange(1,5))
  35. # print('haha')
  36. # foo()
  37. # 四:编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件),要求登录成功一次,后续的函数都无需再输入用户名和密码
  38. # 注意:从文件中读出字符串形式的字典,可以用eval('{"name":"egon","password":"123"}')转成字典格式
  39. # user_dic={
  40. # 'egon':'123',
  41. # 'alex':'alex3714',
  42. # 'wupeiqi':'wu13',
  43. # 'yuanhao':'123123'
  44. # }
  45. # with open('db.txt','w',encoding='utf-8') as f:
  46. # f.write(str(user_dic))
  47. # with open('db.txt','r',encoding='utf-8') as f:
  48. # res=f.read()
  49. # #print(res,type(res))#字符串类型
  50. # user_dic=eval(res)
  51. # #print(user_dic,type(user_dic))#字典类型
  52. # db_path='db.txt'
  53. # login_dic={
  54. # 'user':None,
  55. # 'status':False,
  56. # }
  57. # def auth(func):
  58. # def wrapper(*args,**kwargs):
  59. # if login_dic['user'] and login_dic['status']:
  60. # res = func(*args, **kwargs)
  61. # return res
  62. # name=input('your name: ')
  63. # password=input('your password: ')
  64. # with open(db_path,'r',encoding='utf-8') as f:
  65. # user_dic=eval(f.read())
  66. # if name in user_dic and password == user_dic[name]:
  67. # print('login ok')
  68. # login_dic['user']=name
  69. # login_dic['status']=True
  70. # res=func(*args,**kwargs)
  71. # return res
  72. # else:
  73. # print('login err')
  74. # return wrapper
  75. # @auth #auth(index)
  76. # def index():
  77. # print('welecome to index')
  78. # @auth
  79. # def home(name):
  80. # print('welecome %s to home page' %name)
  81. # index()
  82. # home('egon')
  83. # 五:编写下载网页内容的函数,要求功能是:用户传入一个url,函数返回下载页面的结果
  84. # from urllib.request import urlopen
  85. # def index(url):
  86. # def get():
  87. # return urlopen(url).read()
  88. # return get
  89. # python = index('https://www.python.org')
  90. # print(python())
  91. # 六:为题目五编写装饰器,实现缓存网页内容的功能:
  92. # 具体:实现下载的页面存放于文件中,如果文件内有值(文件大小不为0),
  93. # 就优先从文件中读取网页内容,否则,就去下载,然后存到文件中
  94. # from urllib.request import urlopen
  95. # import os
  96. # cache_path=r'C:\Users\Administrator\PycharmProjects\python5期\day8\cache.txt'
  97. # def make_cache(func):
  98. # def wrapper(*args,**kwargs):
  99. # if os.path.getsize(cache_path):
  100. # #有缓存,文件不为空
  101. # print('\033[45m=========>有缓存\033[0m')
  102. # with open(cache_path,'rb') as f:
  103. # res=f.read()
  104. # else:
  105. # res=func(*args,**kwargs) #下载
  106. # with open(cache_path,'wb') as f: #制作缓存
  107. # f.write(res)
  108. # return res
  109. # return wrapper
  110. # @make_cache
  111. # def get(url):
  112. # return urlopen(url).read()
  113. # print('================>first')
  114. # print(get('https://www.python.org'))
  115. # print('================>second')
  116. # print(get('https://www.python.org'))
  117. # print('================>third')
  118. # print(get('https://www.python.org'))
  119. # 七:还记得我们用函数对象的概念,制作一个函数字典的操作吗,
  120. # 来来来,我们有更高大上的做法,在文件开头声明一个空字典,
  121. # 然后在每个函数前加上装饰器,完成自动添加到字典的操作
  122. # func_dic = {}
  123. # def deco(key):
  124. # def deco2(func):
  125. # func_dic[key]=func
  126. # return deco2
  127. # @deco('f1')#@deco2 func1=deco2(func1)
  128. # def func1():
  129. # print("from f1")
  130. # @deco('f2')
  131. # def func2():
  132. # print("from f2")
  133. # @deco('f3')
  134. # def func3():
  135. # print("from f3")
  136. # print(func_dic)
  137. # while True:
  138. # cmd=input('>>: ').strip()
  139. # if cmd in func_dic:
  140. # func_dic[cmd]()

s5_day7装饰器作业的更多相关文章

  1. Day 11 函数名,闭包,装饰器. +作业

    '''一.函数名.def func(): print(5555)print(func)#输出结果 <function func at 0x026B5E88> 打印函数地址. # 1. 函数 ...

  2. Python 迭代器&生成器,装饰器,递归,算法基础:二分查找、二维数组转换,正则表达式,作业:计算器开发

    本节大纲 迭代器&生成器 装饰器  基本装饰器 多参数装饰器 递归 算法基础:二分查找.二维数组转换 正则表达式 常用模块学习 作业:计算器开发 实现加减乘除及拓号优先级解析 用户输入 1 - ...

  3. Python之路第一课Day4--随堂笔记(迭代生成装饰器)

    上节回顾: 1.集合 a.关系测试 b.去重 2.文件操作及编码 3.函数 4.局部变量和全局变量 上节回顾 本节课内容: 1.迭代器生成器 2.装饰器 3.json pickle数据序列化 4.软件 ...

  4. Python_Day_5装饰器、字符串格式化、序列化、内置模块、生成器、迭代器之篇

    一.装饰器 为什么要用装饰器??? 在实际的开发环境中应遵循开发封闭原则,虽然在这个原则是用的面向对象开发,但也适用于函数式编程,简单地说,它规定已经实现的功能代码不是允许修改的,但是可以被扩展: 封 ...

  5. Day04 - Python 迭代器、装饰器、软件开发规范

    1. 列表生成式 实现对列表中每个数值都加一 第一种,使用for循环,取列表中的值,值加一后,添加到一空列表中,并将新列表赋值给原列表 >>> a = [0, 1, 2, 3, 4, ...

  6. Day4 - Python基础4 迭代器、装饰器、软件开发规范

    Python之路,Day4 - Python基础4 (new版)   本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 ...

  7. python-Day4-迭代器-yield异步处理--装饰器--斐波那契--递归--二分算法--二维数组旋转90度--正则表达式

    本节大纲 迭代器&生成器 装饰器  基本装饰器 多参数装饰器 递归 算法基础:二分查找.二维数组转换 正则表达式 常用模块学习 作业:计算器开发 实现加减乘除及拓号优先级解析 用户输入 1 - ...

  8. Python学习笔记——基础篇【第四周】——迭代器&生成器、装饰器、递归、算法、正则表达式

    目录 1.迭代器&生成器 2.装饰器 a.基本装饰器 b.多参数装饰器 3.递归 4.算法基础:二分查找.二维数组转换 5.正则表达式 6.常用模块学习 #作业:计算器开发 a.实现加减成熟及 ...

  9. python之路第五篇之装饰器:(进阶篇)

    装饰器: 学前必备知识: def f1(): print "f1" f1() #表示函数执行 f1 #表示函数,指向内存地址 f1 = lambda x: x + 1 f1() # ...

随机推荐

  1. Missing artifact javax.transaction:jta:jar:1.0.1B解决办法

    maven库中缺少了这个jar,需要把这个jar安装到本地库中去. 1.下载包含此jar的zip包,地址: http://download.csdn.net/detail/spring123tt/68 ...

  2. tf命令总结

    $/AutoBuild/WpfApp/WpfApp/MainWindow.xaml 发现tf workspaces /collection:http://192.168.175.117:8080/tf ...

  3. java.lang.IllegalArgumentException: SessionContext must be an HTTP compatible implementation.:模块化本地测试shiro的一些总结

    项目由于是多模块的,所以,测试的时候我想现将shiro框架进行本地测试,然后再放入框架里面,但是这个困扰我了两天了都,其实我应该想到的,只是想多试试,最后还不如多想想 先说一下系统的基本情况,项目是多 ...

  4. 常用cms

    最近,朋友要建站让我帮着推荐个好的CMS(内容管理系统),个人认为其实选择哪个CMS并不重要,除了对搜索引擎的亲好外,个人的使用操作习惯和对所选CMS系统的熟悉程度有很大关系. 这里为需要建站但又徘徊 ...

  5. 刚新建好的动态网站项目,创建jsp页面就报错

    拿到刚刚可以运行的Eclipse,就马上想敲码了,但一创建项目之后再创建jsp页面就报错= =! 报错的内容大概为缺乏对应的jar包. 我们常用Tomcat为中间体,而他本身是带有开发jsp网站的对应 ...

  6. Linux下面 多线程死锁问题的调试

    最近写服务,经常是单进程,多线程的,加了各种锁,很担心出现死锁问题,专门学习了一下死锁问题的诊断. 死锁 (deallocks): 是指两个或两个以上的进程(线程)在执行过程中,因争夺资源而造成的一种 ...

  7. 金典 SQL笔记(9)

    page301-354其它解决方式 ---开窗函数 --測试数据及表 USE [NB] GO /****** 对象: Table [dbo].[T_Person2] 脚本日期: 08/14/2015 ...

  8. 【python】获取网页中中文内容并分词

    # -*- coding: utf-8 -*- import urllib2 import re import time import jieba url="http://www.baidu ...

  9. Sort List[leetcode] 由归并排序的递归和循环,到本题的两种解法

    归并排序能够有两种思路----top-down 和 bottom-up top-down: 递归实现,将数组分成两半.分别处理.再合并. 伪代码例如以下: split ( A[], l, r) { i ...

  10. 红黑树C++实现

    1 /* 2 * rbtree.h 3 * 1. 每个节点是红色或者黑色 4 * 2. 根节点是黑色 5 * 3. 每个叶子节点是黑色(该叶子节点就空的节点) 6 * 4. 如果一个节点是红色,则它的 ...