python装饰器个人总结内容

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

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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值