鱼C论坛

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

[已解决]关于return

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

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

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

x
  1. def funX():
  2.         x = [5]
  3.         def funY():
  4.                 x[0] *= x[0]
  5.                 return x[0]
  6.         funY()
复制代码


输入funX()没有任何返回结果


  1. def fun1():
  2.        print('123')
  3.        def fun2():
  4.               print('456')
  5.        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→最外面
这样走。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-2-27 17:37:22 | 显示全部楼层
print会打印,第一个你运行也没用,也是需要print打印
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

第一个不是已经有 return x[0]了吗?为什么没有返回呢?最后一行 funY() 也已经打上去,不是因该执行funY() 吗?这样不就会返回return x[0]的值也就是25了吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

反不返回你也没有打印
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-27 17:49:36 | 显示全部楼层
你运行funX只是执行了funY,你的funX并没有将funY的值返回,应该这样:
  1. def funX():
  2.         x = [5]
  3.         def funY():
  4.                 x[0] *= x[0]
  5.                 return x[0]
  6.         return funY()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

return funY()和funY()不加return的区别在哪里?能否说明一下,谢谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-27 18:38:17 | 显示全部楼层
  1. def funX():
  2.     x = [5]
  3.     def funY():
  4.             x[0] *= x[0]
  5.             return x[0]
  6.     print(funY())
复制代码


这样就行了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-27 18:39:01 | 显示全部楼层
根本不用return
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-27 18:40:19 | 显示全部楼层
用了return后你还要在外面加print()
小甲鱼最新课程 -> https://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→最外面
这样走。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

因为它执行的是打印,它也不是到了最外面,而是显示出来给用户看,return到最外面能看到是因为用了IDLE,如果不用IDLE运行代码,照样看不见。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-27 21:04:32 | 显示全部楼层
retturn的解释(往下翻大约三分之二的地方):
http://www.runoob.com/python3/python3-function.html
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

print的作用就是显示给用户看,打印出来就是在电脑屏幕上显示出来
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-13 17:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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