JilltT 发表于 2021-9-17 18:37:12

求解修饰符!!

这个修饰符,实在是一知半解,def f()是什么,返回的y是55,有什么意思吗
import time

def timeslong(func):
    def call():
      start = time.clock()
      print("It's time starting ! ")
      func()
      print("It's time ending ! ")
      end = time.clock()
      return "It's used : %s ." % (end - start)
    return call

@timeslong
def f():
    y = 0
    for i in range(10):
      y = y + i + 1
      print(y)
    return y

print(f())

逃兵 发表于 2021-9-17 18:46:51

timeslong的参数就是要被修饰的函数

def f()就是随意定义的函数,主要用来当timeslong的参数

返回值55没有特别的含义,只是因为值为55

for i in range(10):
      y = y + i + 1
      print(y)

JilltT 发表于 2021-9-17 22:59:41

逃兵 发表于 2021-9-17 18:46
timeslong的参数就是要被修饰的函数

def f()就是随意定义的函数,主要用来当timeslong的参数


我想问一下,要被修饰的函数f()是不是可以理解为:比如,f()是新增到timeslong这个函数里的功能

逃兵 发表于 2021-9-18 08:11:18

JilltT 发表于 2021-9-17 22:59
我想问一下,要被修饰的函数f()是不是可以理解为:比如,f()是新增到timeslong这个函数里的功能

相反,修饰符是额外的功能
是给被修饰的函数f() 增加额外功能

JilltT 发表于 2021-9-18 08:26:08

逃兵 发表于 2021-9-18 08:11
相反,修饰符是额外的功能
是给被修饰的函数f() 增加额外功能

那是不是可以表达为 f = timeslong(f)

逃兵 发表于 2021-9-18 08:28:54

本帖最后由 逃兵 于 2021-9-18 08:30 编辑

逃兵 发表于 2021-9-18 08:34:58

定义修饰函数→定义普通函数→修饰普通函数→相当于执行修饰函数(普通函数)

JilltT 发表于 2021-9-18 09:36:09

逃兵 发表于 2021-9-18 08:34
定义修饰函数→定义普通函数→修饰普通函数→相当于执行修饰函数(普通函数)

谢谢!
页: [1]
查看完整版本: 求解修饰符!!