这些是自己疫情期间学习内容,不知道放哪里,放在这吧
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