鱼C论坛

 找回密码
 立即注册
查看: 991|回复: 13

[已解决]关于return

[复制链接]
发表于 2019-2-27 17:34:26 | 显示全部楼层 |阅读模式

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

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

x
def funX():
        x = [5]
        def funY():
                x[0] *= x[0]
                return x[0]
        funY()

输入funX()没有任何返回结果
def fun1():
       print('123')
       def fun2():
              print('456')
       fun2() 

输入fun1()会打印123,456

代码的最后一行的格式一样,为什么第一个没有返回结果,第二个会返回结果呢?
最佳答案
2019-2-27 18:41:34
freecain 发表于 2019-2-27 18:10
return funY()和funY()不加return的区别在哪里?能否说明一下,谢谢!

不加return,那么funY()返回的值只会停留在funX里。
加return,funY()返回的值就会从funX里返回出去。

加return后,数据就会
funY→funX→最外面
这样走。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-2-27 17:37:22 | 显示全部楼层
print会打印,第一个你运行也没用,也是需要print打印
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-2-27 17:44:57 | 显示全部楼层
塔利班 发表于 2019-2-27 17:37
print会打印,第一个你运行也没用,也是需要print打印

第一个不是已经有 return x[0]了吗?为什么没有返回呢?最后一行 funY() 也已经打上去,不是因该执行funY() 吗?这样不就会返回return x[0]的值也就是25了吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-27 17:47:45 | 显示全部楼层
freecain 发表于 2019-2-27 17:44
第一个不是已经有 return x[0]了吗?为什么没有返回呢?最后一行 funY() 也已经打上去,不是因该执行fu ...

反不返回你也没有打印
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-27 17:49:36 | 显示全部楼层
你运行funX只是执行了funY,你的funX并没有将funY的值返回,应该这样:
def funX():
        x = [5]
        def funY():
                x[0] *= x[0]
                return x[0]
        return funY()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-2-27 18:10:11 | 显示全部楼层
2012277033 发表于 2019-2-27 17:49
你运行funX只是执行了funY,你的funX并没有将funY的值返回,应该这样:

return funY()和funY()不加return的区别在哪里?能否说明一下,谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-27 18:38:17 | 显示全部楼层
def funX():
    x = [5]
    def funY():
            x[0] *= x[0]
            return x[0]
    print(funY())

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

使用道具 举报

发表于 2019-2-27 18:39:01 | 显示全部楼层
根本不用return
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-27 18:40:19 | 显示全部楼层
用了return后你还要在外面加print()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-27 18:41:34 | 显示全部楼层    本楼为最佳答案   
freecain 发表于 2019-2-27 18:10
return funY()和funY()不加return的区别在哪里?能否说明一下,谢谢!

不加return,那么funY()返回的值只会停留在funX里。
加return,funY()返回的值就会从funX里返回出去。

加return后,数据就会
funY→funX→最外面
这样走。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-2-27 20:43:55 | 显示全部楼层
水瓶座 发表于 2019-2-27 18:41
不加return,那么funY()返回的值只会停留在funX里。
加return,funY()返回的值就会从funX里返回出去。
...

明白了,那么为什么fun2()的打印值没留在fun1()里而是直接到了最外面?

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

使用道具 举报

发表于 2019-2-27 21:02:25 | 显示全部楼层
freecain 发表于 2019-2-27 20:43
明白了,那么为什么fun2()的打印值没留在fun1()里而是直接到了最外面?

因为它执行的是打印,它也不是到了最外面,而是显示出来给用户看,return到最外面能看到是因为用了IDLE,如果不用IDLE运行代码,照样看不见。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-27 21:04:32 | 显示全部楼层
retturn的解释(往下翻大约三分之二的地方):
http://www.runoob.com/python3/python3-function.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-27 21:05:41 | 显示全部楼层
freecain 发表于 2019-2-27 20:43
明白了,那么为什么fun2()的打印值没留在fun1()里而是直接到了最外面?

print的作用就是显示给用户看,打印出来就是在电脑屏幕上显示出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-10 06:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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