@zhangyy
2021-08-15T06:02:40.000000Z
字数 1931
阅读 314
Python学习
一: 迭代器&生成器
二: 装饰器
三: Json & pickle 数据序列化
四:软件目录结构规范
装饰器:本质就是函数,(装饰其它函数的)就是为其他函数添加附加功能原则:1 不能修改稿被装饰的函数的源代码2 不能修改被装饰的函数的调用方式实现装饰器的知识储备:1. 函数就是“变量”2. 高洁函数a: 把一个函数名当做做实参传给另外一个函数 (不修改被装饰函数源代码的下为其添加功能)b:返回值中包含函数名 (不修改函数的调用方式)3.嵌套函数高阶函数+嵌套函数==》装饰器
#!/usr/bin/env python# -*- coding: utf-8 -*-# Author:zhangyyimport timedef timer(fanc):def warpper(*args,**kwargs):start_time=time.time()fanc()stop_time=time.time()print("int fanc run time is %s" %(stop_time-start_time))return warpper@timerdef test1():time.sleep(3)print("in the test1")@timerdef test2():time.sleep(3)print("in the test2")test1()test2()

#!/usr/bin/env python# -*- coding: utf-8 -*-# Author:zhangyyimport timedef timer(fanc):def warpper(*args,**kwargs):start_time=time.time()fanc(*args,**kwargs)stop_time=time.time()print("int fanc run time is %s" %(stop_time-start_time))return warpper@timerdef test1():time.sleep(3)print("in the test1")@timerdef test2(name,age):time.sleep(3)print("in the test2",name,age)test1()test2("zhangyy",26)

#!/usr/bin/env python# -*- coding: utf-8 -*-# Author:zhangyyimport timeuser,passwd = 'zhangyy','abc123'def auth(auth_type):print("auth func:",auth_type)def outer_wrapper(func):def wrapper(*args, **kwargs):print("wrapper func args:", *args, **kwargs)if auth_type == "local":username = input("Username:").strip()password = input("Password:").strip()if user == username and passwd == password:print("\033[32;1mUser has passed authentication\033[0m")res = func(*args, **kwargs) # from homeprint("---after authenticaion ")return reselse:exit("\033[31;1mInvalid username or password\033[0m")elif auth_type == "ldap":print("搞毛线ldap,不会。。。。")return wrapperreturn outer_wrapperdef index():print("welcome to index page")@auth(auth_type="local") # home = wrapper()def home():print("welcome to home page")return "from home"@auth(auth_type="ldap")def bbs():print("welcome to bbs page")index()print(home()) #wrapper()bbs()

#!/usr/bin/env python# -*- coding: utf-8 -*-# Author:zhangyydef fib(max):n, a, b = 0, 0, 1while n < max:print(b)a, b = b, a + bn = n + 1return 'done'fib(10)

