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

这段代码的执行顺序为什么是这样的?

import time


def performance(unit):

        def fn(f):

            def fn1(*args, **kw):

                print unit

                r =  f(*args, **kw)

                print unit

                return r

            return fn1

        return fn


@performance('ms')

def factorial(n):

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


print factorial(10)

执行结果:

ms

ms

3628800



正在回答

1 回答

你想说为什么是输出是两个ms在前面,而3628800在后面吗?

我认为是这样的,最后那个数字其实不是在函数中打印的,而是函数的返回结果,然后通过print factorial(10)这里才打印出来。而前面那两个ms是在函数的执行过程中打印的,当然在3628800前面了。

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

amingo 提问者

非常感谢!
2015-08-31 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

这段代码的执行顺序为什么是这样的?

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