2830680393 发表于 2020-4-29 19:36:19

装饰器

帮忙看看下面的代码!


import time
def fun_time(func):
    def print_time(*args):
      t1 = time.time()
      func(*args)
      t2 = time.time()
      print("运行时间为",t2-t1)

    return print_time

@print_time
def fib(n):
   if n==1 or n==2:
      return 1
   else:
      i,f1,f2 =2,1,1
      while(i<n):
            f3 = f1+f2
            f1 = f2
            f2 = f3
            i+=1
      print(f3)

fib(10000)

结果:<function __main__.print_time(func)>

qiuyouzhi 发表于 2020-4-29 19:38:32

我这里会报错,应该是这样吧
import time
def fun_time(func):
    def print_time(*args):
      t1 = time.time()
      func(*args)
      t2 = time.time()
      print("运行时间为",t2-t1)

    return print_time

@fun_time
def fib(n):
   if n==1 or n==2:
      return 1
   else:
      i,f1,f2 =2,1,1
      while(i<n):
            f3 = f1+f2
            f1 = f2
            f2 = f3
            i+=1
      print(f3)

fib(10000)

zltzlt 发表于 2020-4-29 19:40:48

应该是 @fun_time 不是 @print_time 。代码帮你改好了:

import time


def fun_time(func):
    def print_time(*args):
      t1 = time.time()
      func(*args)
      t2 = time.time()
      print("运行时间为", t2 - t1)

    return print_time


@fun_time
def fib(n):
    if n == 1 or n == 2:
      return 1
    else:
      i, f1, f2 = 2, 1, 1
      while i < n:
            f3 = f1 + f2
            f1 = f2
            f2 = f3
            i += 1
      print(f3)


fib(10000)
页: [1]
查看完整版本: 装饰器