sc-tbm 发表于 2021-6-7 11:39:04

嵌套函数返回的问题

def funOut():
    def funIn():
      print('宾果!你成功访问到我啦!')
    return funIn

funOut()()

这段代码为什么需要 在funOut函数后面用两个小括号?

wp231957 发表于 2021-6-7 11:43:14

第一个括号是调用
第二个括号还是调用

sc-tbm 发表于 2021-6-7 11:45:26

wp231957 发表于 2021-6-7 11:43
第一个括号是调用
第二个括号还是调用

我知道是调用,我的意思是为什么 一个括号不返回值,而两个括号才会返回 funIn 函数?

wp231957 发表于 2021-6-7 12:02:26

sc-tbm 发表于 2021-6-7 11:45
我知道是调用,我的意思是为什么 一个括号不返回值,而两个括号才会返回 funIn 函数?

这东西没多难吧

wp231957 发表于 2021-6-7 12:05:35

sc-tbm 发表于 2021-6-7 11:45
我知道是调用,我的意思是为什么 一个括号不返回值,而两个括号才会返回 funIn 函数?

也许这样 好理解 ???

>>> def funOut():
...   def funIn():
...      print('宾果!你成功访问到我啦!')
...   return funIn
...

>>> 内部函数地址=funOut()
>>> 内部函数调用=内部函数地址()
宾果!你成功访问到我啦!
>>>

sc-tbm 发表于 2021-6-7 12:37:23

wp231957 发表于 2021-6-7 12:02
这东西没多难吧

这个好理解一些,因为是编程0基础,所以很多运行机制都不了解
这里的意思是,funOut 函数不加括号,表示返回它的内存地址
然而加一个括号的情况下,由于funOut函数返回的是内部函数funIn的值
而返回 return funIn 函数没有小括号,因此返回的也是它的内存地址,
所以最终 funOut 函数如果要调用funIn的返回值,需要再加一个小括号?

wp231957 发表于 2021-6-7 12:44:58

sc-tbm 发表于 2021-6-7 12:37
这个好理解一些,因为是编程0基础,所以很多运行机制都不了解
这里的意思是,funOut 函数不加括号,表示 ...

是这个样子的
页: [1]
查看完整版本: 嵌套函数返回的问题