def adder(x): def wrapper(y): return x + y return wrapper adder5 = adder(5) print(adder5(adder5(6)))
10
12
14
16
闭包,指有权访问另一个函数作用域中变量的函数。通俗讲闭包是一种特殊的对象,在外部函数调用后(外部函数的变量应该被销毁,因为已经调用了),但闭包的存在,使我们仍可以访问外部函数的变量对象。
闭包就是:
1.一个函数(外函数)内部定义了一个函数(内函数)
2.内函数调用了外函数的变量
3.并且外函数的返回值是内函数的引用
第一个adder5=adder(5)结束后,x=5,adder返回值为wrapper
adder5(6),此时wrapper(6),所以值为11,x为5
adder5(adder5(6)),同理,11+5=16
这道题考查的是闭包,外部函数确定了x的值为5,内部函数的值为6,所以第一次计算结果为11,第二次计算,还是在x为5的前提下,需要在11的基础上再加5
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题