python:装饰器函数 timer

python 装饰器本身就是一个函数,它的作用是装饰一个其他的函数,但是不改变原有的程序功能,还能增添新的功能,调用函数时用@timer 。

编写 test_timer.py  如下

# coding:utf-8
""" 装饰器函数 运行计时器 """
import sys
from functools import reduce
import time

# 函数可以嵌套其它函数中定义
def timer(function):
    """ 装饰器函数 timer, 其中 funcation 为要装饰的函数 """
    def wrapper(args, *kv):
        start = time.perf_counter()
        function(args, *kv)
        end = time.perf_counter()
        spend_time = end-start
        print(f"spend time: {spend_time} s")
    return wrapper

@timer
def factorial(n:int):
    """ 计算阶乘 n! """
    fact = reduce(lambda x,y: x*y, range(1,n+1))
    print(f"{n}! = {fact}")

# main()
if len(sys.argv) ==2:
    n = int(sys.argv[1])
else:
    print('usage: python test_timer.py n ')
    sys.exit(1)

factorial(n)

运行 python test_timer.py  30 

30! = 265252859812191058636308480000000
spend time: 0.00013499999999999623 s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值