鱼C论坛

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

[已解决]20课后作业

[复制链接]
发表于 2020-8-1 16:09:07 | 显示全部楼层 |阅读模式
10鱼币
def funOut():
    def funIn():
        print('宾果!你成功访问到我啦!')
    return funIn
funOut()()
宾果!你成功访问到我啦!
这个程序 return funIn返回值是什么?是一个变量funIn吗?还是其他什么?
funOut()()这个意思就是访问funIn()吗?如果是funIn():里面再嵌套一个funin()函数是否可以通过funOut()()()来访问?
还有一个函数里可以嵌套多个函数吗?若可以应该怎样访问funin()?
def funOut():
    def funIn():
        print('宾果!你成功访问到我啦!')
    def funin():
        print('宾果2!你成功访问到我啦!')
    return funIn()+funin()
若是这样呢?
def funOut():
    def funIn():
        print('宾果!你成功访问到我啦!')
    def funin():
        print('宾果2!你成功访问到我啦!')
    return funIn+funin





最佳答案
2020-8-1 16:09:08


这个程序 return funIn返回值是什么?是一个变量funIn吗?还是其他什么?


返回的就是一个函数,因为 funIn 没有带上括号,如果带上括号了返回的就是 funIn 函数的调用结果
funOut()()这个意思就是访问funIn()吗?

funOut()() 相当于 funIn()


如果是funIn():里面再嵌套一个funin()函数是否可以通过funOut()()()来访问?


可以,相当于 funOut()()() -->> funIn()() -->> funin()


还有一个函数里可以嵌套多个函数吗?若可以应该怎样访问funin()?


可以通过这样访问:
def funOut():
    def funIn():
        print('宾果!你成功访问到我啦!')
    def funin():
        print('宾果2!你成功访问到我啦!')
    return (funIn,funin)

funOut()[0]()
funOut()[1]()

输出结果:
宾果!你成功访问到我啦!
宾果2!你成功访问到我啦!

最佳答案

查看完整内容

返回的就是一个函数,因为 funIn 没有带上括号,如果带上括号了返回的就是 funIn 函数的调用结果 funOut()() 相当于 funIn() [hr] 可以,相当于 funOut()()() -->> funIn()() -->> funin() [hr] 可以通过这样访问: 输出结果:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-1 16:09:08 | 显示全部楼层    本楼为最佳答案   


这个程序 return funIn返回值是什么?是一个变量funIn吗?还是其他什么?


返回的就是一个函数,因为 funIn 没有带上括号,如果带上括号了返回的就是 funIn 函数的调用结果
funOut()()这个意思就是访问funIn()吗?

funOut()() 相当于 funIn()


如果是funIn():里面再嵌套一个funin()函数是否可以通过funOut()()()来访问?


可以,相当于 funOut()()() -->> funIn()() -->> funin()


还有一个函数里可以嵌套多个函数吗?若可以应该怎样访问funin()?


可以通过这样访问:
def funOut():
    def funIn():
        print('宾果!你成功访问到我啦!')
    def funin():
        print('宾果2!你成功访问到我啦!')
    return (funIn,funin)

funOut()[0]()
funOut()[1]()

输出结果:
宾果!你成功访问到我啦!
宾果2!你成功访问到我啦!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-1 16:09:46 | 显示全部楼层
1. return funIn 表示返回 funIn 函数本身
2. 是的
3. 需要这样以元组的形式返回两个函数:
def funOut():
    def funIn():
        print('宾果!你成功访问到我啦!')
    def funin():
        print('宾果2!你成功访问到我啦!')
    return funIn, funin
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-8-1 16:26:44 | 显示全部楼层
Twilight6 发表于 2020-8-1 16:09
返回的就是一个函数,因为 funIn 没有带上括号,如果带上括号了返回的就是 funIn 函数的调用结果
...

求问:
def funOut():
    def funIn():
        print('宾果!你成功访问到我啦!')
    def funin():
        print('宾果2!你成功访问到我啦!')
    return (funIn(),funin())
结果:
funOut()
宾果!你成功访问到我啦!
宾果2!你成功访问到我啦!
(None, None)

为什么结果会多了一行(None, None)
(一选代码格式会乱码,见量下)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-1 16:29:19 | 显示全部楼层
月魔同学 发表于 2020-8-1 16:26
求问:
def funOut():
    def funIn():


因为 函数如果你没有设置返回值 默认返回一个  None

所以就是因为你里面函数并没有设置 return 所以默认返回 None ,而你加上 print 就将 None 打印出来了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-8-1 16:37:50 | 显示全部楼层
Twilight6 发表于 2020-8-1 16:29
因为 函数如果你没有设置返回值 默认返回一个  None

所以就是因为你里面函数并没有设置 return 所 ...

是funIn和funin没有返回值吗?如果是那下面的funIn同样没有返回值,为什么就不打印None呢?
def funOut():
    def funIn():
        print('宾果!你成功访问到我啦!')
    return funIn()
结果:
funOut()
宾果!你成功访问到我啦!

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

使用道具 举报

发表于 2020-8-1 16:41:24 | 显示全部楼层

运行下下面代码,你就知道了:
def funOut():
    def funIn():
        print('宾果!你成功访问到我啦!')
    return funIn
funOut()()
print('----------'*5)
print(funOut())
print('----------'*5)
print(funOut()())

还有这个:
def func():
    return 10000

print(func())

def func():
    pass

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-19 17:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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