一、真题
执行以下程序,输出结果为()
def outer(fn):
print('outer')
def inner():
print('inner')
return fn
return inner
@outer
def fun():
print('fun')
- A. outer
- B. inner
- C. fun
- D. 因为没有调用任何函数,所以没有输出结果。
二、详解
通过以上代码可以看出来,定义了两个函数outer
和fun
。其中outer
为装饰器。也没有函数被调用。但我们知道装饰器的一个关键特性就是它会在被装饰函数定义后,该装饰器被立即执行。则该段程序中只有outer
会被执行,它会将被装饰函数作为自己的参数执行。即执行outer(fun)
。而outer
函数只有两部分print('outer')
和 def inner()
。我们知道只是定义函数的话不会被执行。所以他会输出outer
。正确答案为A。