鱼C论坛

 找回密码
 立即注册
查看: 3728|回复: 6

[已解决]第20课测试题第5题求助

[复制链接]
发表于 2016-2-1 16:39:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

funIn返回的是个什么?
为什么funOut()()才访问得到funIn()?funIn和funIn()有什么不同?
最佳答案
2016-2-1 16:56:03
本帖最后由 Lnan95 于 2016-2-1 16:58 编辑

①funin()就是print那些字符,啥也没返回
②funIn和funIn()的区别是一个函数本身,一个是调用函数
区别在哪,就比如a = funout()实质就是a=funin,把a赋值为函数funin,而此时a()就像funin(),调用了本身的内容。
③funout()()可以看作return funin后给funin加个(),就是funin()了

没事干可以自己打增减些代码研究一下咯~比如return后的funin加个(),在def funout下在加个内置函数,看看双()()是影响return值还是影响子函数当然以上都是我个人总结,不敢说绝对正确和严谨,希望能帮到你
  1. def funout():
  2.         def funin():
  3.                 print('我是funin')
  4.         def funinnn():
  5.                 print('我是funinnn')
  6.         return funin
复制代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-2-1 16:53:08 | 显示全部楼层
funIn是函数对象, 在其后边加上()表示要调用他
funOut()返回的是funIn这个函数的对象, 并没有调用, 需要再加上()才算调用了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-2-1 16:56:03 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Lnan95 于 2016-2-1 16:58 编辑

①funin()就是print那些字符,啥也没返回
②funIn和funIn()的区别是一个函数本身,一个是调用函数
区别在哪,就比如a = funout()实质就是a=funin,把a赋值为函数funin,而此时a()就像funin(),调用了本身的内容。
③funout()()可以看作return funin后给funin加个(),就是funin()了

没事干可以自己打增减些代码研究一下咯~比如return后的funin加个(),在def funout下在加个内置函数,看看双()()是影响return值还是影响子函数当然以上都是我个人总结,不敢说绝对正确和严谨,希望能帮到你
  1. def funout():
  2.         def funin():
  3.                 print('我是funin')
  4.         def funinnn():
  5.                 print('我是funinnn')
  6.         return funin
复制代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-2-1 21:53:36 | 显示全部楼层
funIn()啥也没返回,只有写了return 才有返回值
对于你这个函数当调用funOut()的时候return funIn,也就是返回的funIn的内存地址
funIn()才是调用funIn()方法
你可以看下下面的例子
  1. >>> def funOut():
  2.         def funIn():
  3.                 print('aaa')
  4.         return funIn

  5. >>> a = funOut()
  6. >>> a
  7. <function funOut.<locals>.funIn at 0x00000000027ED7B8>
  8. >>> a()
  9. aaa
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-10 10:42:45 | 显示全部楼层
Lnan95 发表于 2016-2-1 16:56
①funin()就是print那些字符,啥也没返回
②funIn和funIn()的区别是一个函数本身,一个是调用函数
区别在 ...

学习了,多谢分享
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-10 13:37:40 | 显示全部楼层
路过学习一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-2-7 10:56:55 | 显示全部楼层
函数名本身也是可以作为变量来着,return funIn并没有返回到什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-27 00:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表