张静aa 发表于 2021-6-2 20:25:08

python 第20讲测试题第5题

题目:怎么访问funIn()
def funOut():
    def funIn():
      print('宾果!你成功访问到我啦!')
    return funIn
求助:我知道他跟上一道题代码的区别在哪儿,只是不明白为什么只需要多加一个括号,也就是funOut()(),就可以访问?
求大神指教一下{:10_269:}

wp231957 发表于 2021-6-2 20:34:16

这里返回的是函数地址,想要调用自然需要括号

easyboy 发表于 2021-6-2 20:41:15

Python中的函数名相当于内存地址,内部代码块为储存在内存地址中的字符串,所以一个函数的return值也可以为另一个函数的函数名,将该函数的运行结果赋给另一个变量后,以“变量名(要求的参数)”的形式就可以运行被return的函数。
注意无论在何位置以何种形式调用函数,函数的作用域都只和它被声明时的作用域有关。
————————————————
版权声明:本文为CSDN博主「Allen__MB」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43690603/article/details/84332519

Wzzhxy1 发表于 2021-6-2 21:11:05

楼主仔细看第四题和第五题的区别:在return那里一个是return funIn(),一个是return funIn,这里有区别的。return funIn()是普通内嵌函数,return funIn是内嵌函数的闭包,课上有讲的,闭包需要调用外部和内部,需要两个括号调用,如果您还没明白可以去课上听听普通内嵌函数和闭包那节课,或者向我提问都可以,我说的比较通俗易懂吧。{:10_279:}{:10_279:}

张静aa 发表于 2021-6-3 09:39:08

Wzzhxy1 发表于 2021-6-2 21:11
楼主仔细看第四题和第五题的区别:在return那里一个是return funIn(),一个是return funIn,这里有区别的。 ...

{:10_297:}可以可以,讲的很清楚,蟹蟹丫{:10_281:}

张静aa 发表于 2021-6-3 09:41:22

easyboy 发表于 2021-6-2 20:41
Python中的函数名相当于内存地址,内部代码块为储存在内存地址中的字符串,所以一个函数的return值也可以为 ...

谢谢谢谢呀{:10_297:}
页: [1]
查看完整版本: python 第20讲测试题第5题