[关闭]
@zhangyy 2021-08-15T14:02:40.000000Z 字数 1931 阅读 120

python的迭代器生成器文件处理(四)

Python学习


一: 迭代器&生成器
二: 装饰器
三: Json & pickle 数据序列化
四:软件目录结构规范


一:装饰器

  1. 装饰器:本质就是函数,(装饰其它函数的)就是为其他函数添加附加功能
  2. 原则:1 不能修改稿被装饰的函数的源代码
  3. 2 不能修改被装饰的函数的调用方式
  4. 实现装饰器的知识储备:
  5. 1. 函数就是“变量”
  6. 2. 高洁函数
  7. a: 把一个函数名当做做实参传给另外一个函数 (不修改被装饰函数源代码的下为其添加功能)
  8. b:返回值中包含函数名 (不修改函数的调用方式)
  9. 3.嵌套函数
  10. 高阶函数+嵌套函数==》装饰器
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. # Author:zhangyy
  4. import time
  5. def timer(fanc):
  6. def warpper(*args,**kwargs):
  7. start_time=time.time()
  8. fanc()
  9. stop_time=time.time()
  10. print("int fanc run time is %s" %(stop_time-start_time))
  11. return warpper
  12. @timer
  13. def test1():
  14. time.sleep(3)
  15. print("in the test1")
  16. @timer
  17. def test2():
  18. time.sleep(3)
  19. print("in the test2")
  20. test1()
  21. test2()

image_1bmo2962mf6f1te65hreb614vh9.png-57.8kB

  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. # Author:zhangyy
  4. import time
  5. def timer(fanc):
  6. def warpper(*args,**kwargs):
  7. start_time=time.time()
  8. fanc(*args,**kwargs)
  9. stop_time=time.time()
  10. print("int fanc run time is %s" %(stop_time-start_time))
  11. return warpper
  12. @timer
  13. def test1():
  14. time.sleep(3)
  15. print("in the test1")
  16. @timer
  17. def test2(name,age):
  18. time.sleep(3)
  19. print("in the test2",name
  20. ,age)
  21. test1()
  22. test2("zhangyy",26)

image_1bmo2d6lg1kgh1t21eh618s6fg1m.png-48.6kB

  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. # Author:zhangyy
  4. import time
  5. user,passwd = 'zhangyy','abc123'
  6. def auth(auth_type):
  7. print("auth func:",auth_type)
  8. def outer_wrapper(func):
  9. def wrapper(*args, **kwargs):
  10. print("wrapper func args:", *args, **kwargs)
  11. if auth_type == "local":
  12. username = input("Username:").strip()
  13. password = input("Password:").strip()
  14. if user == username and passwd == password:
  15. print("\033[32;1mUser has passed authentication\033[0m")
  16. res = func(*args, **kwargs) # from home
  17. print("---after authenticaion ")
  18. return res
  19. else:
  20. exit("\033[31;1mInvalid username or password\033[0m")
  21. elif auth_type == "ldap":
  22. print("搞毛线ldap,不会。。。。")
  23. return wrapper
  24. return outer_wrapper
  25. def index():
  26. print("welcome to index page")
  27. @auth(auth_type="local") # home = wrapper()
  28. def home():
  29. print("welcome to home page")
  30. return "from home"
  31. @auth(auth_type="ldap")
  32. def bbs():
  33. print("welcome to bbs page")
  34. index()
  35. print(home()) #wrapper()
  36. bbs()

image_1bmogm2j03m1nhe3uj164j1hc49.png-66.6kB


  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. # Author:zhangyy
  4. def fib(max):
  5. n, a, b = 0, 0, 1
  6. while n < max:
  7. print(b)
  8. a, b = b, a + b
  9. n = n + 1
  10. return 'done'
  11. fib(10)

image_1bmojf8kss3r10371et13nf1u2g9.png-44.8kB

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注