benniefung 发表于 2020-10-10 17:06:32

第020讲:测试题第四题第五题的区别

原题如下
4. 请问如何访问 funIn() 呢?
def funOut():
    def funIn():
      print('宾果!你成功访问到我啦!')
    return funIn()5.请问如何访问 funIn() 呢?
def funOut():
    def funIn():
      print('宾果!你成功访问到我啦!')
    return funIn
思来想去
我的问题是:没搞懂 funIn 后面加与不加()的区别在哪里
在看视频和看第五题时我的第一反应都是觉得会报错
我是这么理解的
1.函数在定义时需要带()
2.因第五题返回funIn没有带() ,所以python会觉得funIn不是函数而是变量,而且这个变量在之前没有被定义从而报错.
但上机看来不是

纯小白想不通我理解错在哪{:10_266:}
有大牛能答疑一下吗

r



疾风怪盗 发表于 2020-10-10 17:16:26

不带()是函数名,带()是函数方法
返回的值应该是不一样的吧
def funOut():
    def funIn():
      print('宾果!你成功访问到我啦!')
    return funIn
print(funOut())
print()
def funOut():
    def funIn():
      print('宾果!你成功访问到我啦!')
    return funIn()
print(funOut())

<function funOut.<locals>.funIn at 0x0316EDF0>

宾果!你成功访问到我啦!
None

altf11 发表于 2020-10-10 21:58:56

函数名后面加()表示函数的调用,即函数的执行结果;不加,表示函数对象本身
页: [1]
查看完整版本: 第020讲:测试题第四题第五题的区别