python装饰器个人总结内容

it2023-05-22  79

这些是自己疫情期间学习内容,不知道放哪里,放在这吧

from datetime import datetime def wrapper(func): def log(*args, **kwargs): print("-----***------") print(datetime.now()) # 这里写什么都行,保存访问时间 #写到本地 func(*args, **kwargs) return log @wrapper def wuhaojiayou(*args, **kwargs): print("中国加油,{}加油".format(kwargs["city"])) # 这个是字典 print("总共确诊病例 {} 人".format(args[0])) # 这个是数组 print("疑似病例 {} 人".format(args[1])) @wrapper def tangshanJiayou(number, zengjia, city): print("中国加油,{}加油".format(city)) print("总共确诊病例 {} 人".format(number)) print("增加人数 {} 人".format(zengjia))
今日武汉情况
number = 31253 possible = 26359 wuhaojiayou(number, possible, city="武汉")

唐山

number = 19 zengjia = 2 tangshanJiayou(number, zengjia, "唐山")

练习一下闭包day11_07

def func(num): a = 100 def newfunc(): nonlocal a for i in range(num): a += i print("修改后的a = {}".format(a)) return newfunc f = func(5) f()

廖雪峰装饰器

day11_08

def log(name): def decorator(func): print("装饰函数参数{}, 调用函数{}".format(name, func.__name__)) def wrapper(*args, **kwargs): #写一些装饰器干的活 func(*args, **kwargs) return wrapper return decorator @log('f1调用的') def f1(a, b): print("{}+{}={}".format(a, b, a+b)) @log("f2调用的") def f2(name, age, friendboy): print("{}芳龄{},男朋友是{}".format(name, age, friendboy)) f1(3,5) f2("xiefan", 25, "along")

多个装饰器

# 多个装饰器 def log1(func): def wrapper(*args, **kwargs): func(*args, **kwargs) print("修饰1") return wrapper def log2(func): def wrapper(*args, **kwargs): func(*args, **kwargs) print("修饰2") return wrapper @log2 @log1 def f1(a, b): print("结果=", a+b) f1(1, 4)

总结

先放了log1,函数变为 func(*args, **kwargs) } print("修饰1") }------- 再加log2,在上面的基础上,函数变为 | func(*args, **kwargs) <------ print("修饰2")

day11_10 迭代器

it = iter([1, 2, 3]) while True: try: print(next(it)) except StopIteration: break #pass

写一个yield

def fab(max): n, a, b = 0, 0, 1 while n < max: yield b # print b a, b = b, a + b n = n + 1

另一个用法

def read_file(fpath): BLOCK_SIZE = 1024 with open(fpath, 'rb') as f: while True: block = f.read(BLOCK_SIZE) if block: yield block else: return

functools

最新回复(0)