青春纸盒子

文: 芦苇

你喜欢我笑的样子

我靠上了落寞的窗子

晚风吹起了我的袖子

明月沾湿了你的眸子


转身,你走出了两个人的圈子

树影婆娑,整座院子


挽起袖子

回头,把揽你忧伤一地的影子

装进,青春,这纸盒子


更多代码请关注我的微信小程序: "ecoder"

luwei0915

导航

030_Python3 decorators 模块

import time

# 都不带参数
def dinner(func):
    def wrapper():
        start_time = time.time()

        print('饭前洗了一次手!')
        func()
        print('饭后擦了一下嘴!')
        end_time = time.time()

        print('吃饭花了我\t{}秒'.format(end_time - start_time))

    return wrapper


@dinner
def eat():
    print('Eat...')
    time.sleep(2)


@dinner
def drink():
    print('Drink...')
    time.sleep(3)


eat()
drink()

'''
饭前洗了一次手!
Eat...
饭后擦了一下嘴!
吃饭花了我    2.000243663787842秒

饭前洗了一次手!
Drink...
饭后擦了一下嘴!
吃饭花了我    3.000170946121216秒
'''

 

import time


# 被装饰的函数带参数
def dinner(func):
    def wrapper(a, b):
        start_time = time.time()

        print('饭前洗了一次手!')
        func(a, b)
        print('饭后擦了一下嘴!')
        end_time = time.time()

        print('吃饭花了我\t{}秒'.format(end_time - start_time))

    return wrapper


@dinner
def eat(a, b):
    print('I have {} and {} at dinner'.format(a, b))
    time.sleep(2)


@dinner
def drink(a, b):
    print('I drink {} and {} at dinner'.format(a, b))
    time.sleep(3)


eat('potato', 'rice')
drink('beer', 'tea')

'''
饭前洗了一次手!
I have potato and rich at dinner
饭后擦了一下嘴!
吃饭花了我    2.004790782928467秒

饭前洗了一次手!
I drink beer and tea at dinner
饭后擦了一下嘴!
吃饭花了我    3.0000154972076416秒
'''

 

import time

'''
带参数的装饰器(装饰函数),
实际是对原有装饰器的一个函数的封装,并返回一个装饰器(一个含有参数的闭包函数),
当使用@time_logger(3)调用的时候,Python能发现这一层封装,并将参数传递到装饰器的环境去
'''


# 装饰器 和 被装饰函数 都带参数
def eat_and_drink(flag=''):
    def dinner(func):
        def wrapper(a, b):
            start_time = time.time()

            print('饭前洗了一次手!')
            func(a, b)
            print('饭后擦了一下嘴!')
            end_time = time.time()

            print('吃饭花了我\t{}秒'.format(end_time - start_time))

            if flag:
                print(flag)

        return wrapper

    return dinner


@eat_and_drink('吃完饭我吃了一个苹果.')
def eat(a, b):
    print('I have {} and {} at dinner'.format(a, b))
    time.sleep(2)


@eat_and_drink('喝完汤我小憩了一会.')
def drink(a, b):
    print('I drink {} and {} at dinner'.format(a, b))
    time.sleep(3)


eat('potato', 'rice')
drink('beer', 'tea')

'''
饭前洗了一次手!
I have potato and rice at dinner
饭后擦了一下嘴!
吃饭花了我    2.009742259979248秒
吃完饭我吃了一个苹果.

饭前洗了一次手!
I drink beer and tea at dinner
饭后擦了一下嘴!
吃饭花了我    3.00014066696167秒
喝完汤我小憩了一会.
'''

 

posted on 2021-04-07 19:46  芦苇の  阅读(66)  评论(0)    收藏  举报