爱吃肥肉的马 发表于 2021-3-28 17:21:35

有些地方没听懂,望大神做个通俗的解释

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

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

这个return,加括号和不加括号有什么区别,为什么第二段需要funOut()()才行,而第一段如果funOut()()就会报错

qiuyouzhi 发表于 2021-3-28 17:27:32

https://fishc.com.cn/thread-158943-1-1.html

z5560636 发表于 2021-3-28 20:08:14

首先你的问题提出来就错了,特意还去跑了一下,

第一段: return funIn    # 此处返回的是一个函数地址,意思就是,你喜欢一个女生,还没去追,只是知道她的名字而已。然后return返回给你这个女生的信息,至于怎么采取行动,主动权还是交给你。外部写上funOut1()()第一个括号,funOut1()   的返回值是 funIn   函数名字,欸,在加个括号就是调用函数了funIn(),很无脑吧。

第二段:return funIn()   # 通过上题解释,你应该能抢答了吧?

弈秋呜呜呜 发表于 2021-3-28 20:37:48

加()就是调用,不加()就是一个引用,没有调用
页: [1]
查看完整版本: 有些地方没听懂,望大神做个通俗的解释