装饰器的介绍

本文详细介绍了Python装饰器的概念和使用方法,包括基本使用、带参数的装饰器以及实际应用示例。通过装饰器,可以实现代码复用,动态修改函数行为等功能。示例中展示了如何使用装饰器计算函数执行时间以及控制游戏时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

装饰器的介绍

装饰器的基本使用
import time


def cal_time(fn):
    print('我是外部函数,我被调用了!!!')
    print('fn = {}'.format(fn))

    def inner():
        start = time.time()
        fn()
        end = time.time()
        print('代码耗时', end - start)

    return inner


@cal_time  # 第一件事,调用cal_time;第二件事把被装饰的函数传递给fn
def demo():
    x = 0
    for i in range(1, 100000000):
        x += i
    print(x)


# 第三件事:当再次调用demo函数时,此时的demo已经不再是上面的demo了
print('装饰后的demo ={} '.format(demo))
装饰器详解
import time


def cal_time(fn):
    print('我是外部函数,我被调用了!!!')
    print('fn = {}'.format(fn))

    def inner(x, *args, **kwargs):  # x = 100000000
        start = time.time()
        s = fn(x)  # 100000000
        end = time.time()
        # print('代码耗时', end - start)
        return s, end - start

    return inner


@cal_time  # 第一件事,调用cal_time;第二件事把被装饰的函数传递给fn
def demo(n):
    x = 0
    for i in range(1, n):
        x += i
    return x


m = demo(100000000, 'good', y='hello')
print('m的值是{}'.format(m))
装饰器的使用
def can_play(fn):
    def inner(x, y, *args, **kwargs):
        # print(args)
        # clock = kwargs['clock']
        clock = kwargs.get('clock', 23)
        if clock <= 22:
            fn(x, y)
        else:
            print('太晚了,赶紧睡')

    return inner


@can_play
def play_game(name, game):
    print('{}正在玩{}'.format(name, game))


play_game('张三', '王者荣耀', m='hello', n='good', clock=23)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值