首页 > 试题广场 >

一个段代码定义如下,下列调用结果正确的是? def bar

[单选题]
 一个段代码定义如下,下列调用结果正确的是?
def bar(multiple):
    def foo(n):
        return multiple ** n
    return foo


  • bar(2)(3) == 8
  • bar(2)(3) == 6
  • bar(3)(2) == 8
  • bar(3)(2) == 6
bar()()
一般而言,调用一个函数是加一个括号。如果看见括号后还有一个括号,说明第一个bar函数返回了一个函数,如果后面还有括号,说明前面那个也返回了一个函数。以此类推。
发表于 2018-08-31 23:36:55 回复(0)

缩进在Python中还是挺重要的,牛客中的很多题目都不注意缩进。
这道题中看清一点就是 ** 是取平方
为了保险,这种题目还是编译运行一次比较保险。

def bar(multiple):
    def foo(n):
        return multiple ** n
    return foo
print bar(2)(3)
编辑于 2018-05-08 08:40:24 回复(5)
1.执行bar函数
    bar(2)  返回内层函数foo  传入私有变量 multiple=2
2.执行foo函数
    bar(2)(3)  -> foo(3)  -> 2 * 2 *2 -> 8
发表于 2018-04-24 08:45:52 回复(1)
首先将代码缩进以便看到更加清楚

首先我们要清楚bar函数是返回的foo函数,接下来我们来看看这个例子
那么输出的a到底是什么了,从理论上来看
bar(2)——>>foo(n)=2**n(因为此时的multiple就是3),要清楚a并不是具体的值,因为n并不知道
所以在电脑中实际存储的是一串代码(我也不太清楚是什么东东,不过不要紧,要知道此时a就是2**n这个函数就好),接下来在看a(3)
a(3)——>>2**3(此时n=3)=8,我们来验证我们的结果
与我们实际分析的是一致的。
言归正传,bar(2)(3)又是什么呢?实际上是先编译bar(2)得到一个结果a,再编译a(3),所以最终结果就是8.实际检验一下,如图

编辑于 2019-04-10 17:09:12 回复(1)
首先,带缩进写一遍
def bar(a):
    def foo(b):
        return a ** b
    return foo

return一个函数,考察闭包。当程序调用bar(a)时,返回一个foo函数的引用,此时变成foo(b),去执行foo函数里的函数体。
发表于 2018-08-07 15:06:22 回复(0)
具体缩进是像这样
bar(arg1)(arg2)先进入bar()函数,再进入foo()函数 相对应的 返回值就是 arg1 的 arg2 次方
**表示取指数
因此选
bar(2)(3) == 8
发表于 2018-12-03 16:37:04 回复(1)
** 2平方的意思
编辑于 2018-06-13 16:29:02 回复(2)

闭包

发表于 2019-11-03 22:16:04 回复(0)
不写缩进还没反应过来是什么意思,其实就是求2的3次方
发表于 2018-11-23 21:28:17 回复(0)
In [7]: def dec(f): ...: n = 3 ...: def wrapper(*args,**kw): ...: return f(*args,**kw) * n ...: return wrapper ...: ...: In [8]: @dec ...: def foo(n): ...: return n * 2 ...: In [9]: foo(2) Out[9]: 12 In [10]: foo(3) Out[10]: 18
发表于 2019-04-11 15:19:30 回复(0)
一般情况下,调用一个函数后面有一个括号,如果后面有两个,则说明第一个函数返回值为另一个函数,如果后面还有括号,说明第二个函数返回值也为一个函数,以此类推
发表于 2018-10-09 16:02:52 回复(1)
A
发表于 2018-03-22 10:23:37 回复(0)
函数调用 第一个参数是外面的函数的 后面的参数是里面的
发表于 2023-10-29 21:47:01 回复(0)
<p>函数嵌套 先是2**n </p><p>然后n=3</p><p>2的三次方8</p><p><br></p><p><br></p>
发表于 2021-12-15 13:30:00 回复(0)
没缩进,题目都没看懂
发表于 2019-09-05 21:17:43 回复(0)
这实际是一个典型的闭包函数,调用外部函数返回的是内部函数的引用关系。
发表于 2019-06-10 07:03:27 回复(0)
依次执行
发表于 2019-04-27 22:09:52 回复(0)
闭包
发表于 2019-03-11 17:04:40 回复(0)
a
发表于 2018-08-16 08:15:46 回复(0)
A
发表于 2018-08-11 10:08:06 回复(0)