为了账号安全,请及时绑定邮箱和手机立即绑定

print factorial(10) 中10是什么意思

最后一段print factorial(10)  这个10是什么意思?还有结果3628800是return r的结果还是return fn的结果?

正在回答

3 回答

10是decorator后函数的输入,表示求10的阶乘;return fn返回的是函数,表示原函数经decorator后变成函数fn了,,return r返回的是值,即3628800

0 回复 有任何疑惑可以回复我~
#1

qq_尊爵Miku_0 提问者

太感谢了!
2016-09-08 回复 有任何疑惑可以回复我~

sorry,上面还写漏了一步。更具体的应该是在执行了第3步后,就执行到原定义的factorial()函数:

  1. performance('ms')

  2. perf_decorator(factorial)

  3. wrapper(10)

  4. factorial(10)

  5. 执行wrapper()函数中的print和return

单纯从函数名字上来看执行顺序,是这样子的

0 回复 有任何疑惑可以回复我~

先回答你问题:

10是这个函数最终执行的时候的参数,可以看做是n=10

def factorial(n):
    return reduce(lambda x,y: x*y, range(1, n+1))

3628800是 return r的结果

------------------------------------------------

借用其他同学的代码。2-13节的正确代码可以是这样的:

import time

def performance(unit):
    def perf_decorator(f):
        def wrapper(*args, **kw):
            t1 = time.time()
            r = f(*args, **kw)
            t2 = time.time()
            t = (t2 - t1)*1000 if unit =='ms' else (t2 - t1)
            print 'call %s() in %f %s'%(f.__name__, t, unit)
            return r
        return wrapper
    return perf_decorator

@performance('ms')  
def factorial(n):
    return reduce(lambda x,y: x*y, range(1, n+1))

print factorial(10)

它的执行顺序是这样:

  1. performance('ms')

  2. perf_decorator(factorial)

  3. wrapper(10)

  4. 执行wrapper()函数中的print和return

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
python进阶
  • 参与学习       255665    人
  • 解答问题       2949    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

print factorial(10) 中10是什么意思

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信