首页 > 试题广场 > 当一个嵌套函数在其外部区域引用了一个值时,该嵌套函数就是一个
[单选题]
当一个嵌套函数在其外部区域引用了一个值时,该嵌套函数就是一个闭包,以下代码输出值为:
def adder(x):
    def wrapper(y):
        return x + y
    return wrapper
adder5 = adder(5)
print(adder5(adder5(6)))

  • 10
  • 12
  • 14
  • 16
adder(5) #返回了 wrapper ,且x=5 
adder5 = adder(5) #    adder5是对wrapper的引用   此时x等于5
adder5(6) # 相当于 wrapper(6)  = 5+6=11 所以 adder5(6)  =11 ,同理adder5(7)=12
adder5(adder5(6)) # = adder5(11) =  wrapper(11) =5+11=16 



发表于 2019-07-04 00:41:28 回复(0)

闭包,指有权访问另一个函数作用域中变量的函数。通俗讲闭包是一种特殊的对象,在外部函数调用后(外部函数的变量应该被销毁,因为已经调用了),但闭包的存在,使我们仍可以访问外部函数的变量对象。


发表于 2019-09-06 17:28:45 回复(0)

闭包就是:

1.一个函数(外函数)内部定义了一个函数(内函数)

2.内函数调用了外函数的变量

3.并且外函数的返回值是内函数的引用

第一个adder5=adder(5)结束后,x=5,adder返回值为wrapper

adder5(6),此时wrapper(6),所以值为11,x为5

adder5(adder5(6)),同理,11+5=16

发表于 2019-11-03 21:51:52 回复(0)
adder5 = adder(5)
传入x的值
x=5
adder5 = def wrapper(y):
                   return x + y
adder5(6)
传入y的值
y=6
def wrapper(6):
    return 5 + 6
adder5 = 11
adder5(11)
def wrapper(11):
    return 5+11

发表于 2019-11-09 17:11:15 回复(0)
那什么是闭包呢,一言以蔽之:一个持有外部环境变量的函数就是闭包。
发表于 2019-09-27 15:44:51 回复(0)

这道题考查的是闭包,外部函数确定了x的值为5,内部函数的值为6,所以第一次计算结果为11,第二次计算,还是在x为5的前提下,需要在11的基础上再加5


发表于 2019-08-29 16:58:07 回复(0)