鱼C论坛

 找回密码
 立即注册
查看: 1523|回复: 10

[已解决]关于函数里的print和return

[复制链接]
发表于 2022-4-30 08:24:19 | 显示全部楼层 |阅读模式

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

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

x
def fun(n):
    if n == 0:
        age = 10
    else:

        age = fun(n-1) + 2
    return age

print(fun(4))
这个代码可以正常返回18,下边这个为啥就是返回TypeError: unsupported operand type(s) for +: 'NoneType' and 'int',return和print讲道理不是差不多一个意思么
def fun(n):
    if n == 0:
        age = 10
    else:

        age = fun(n-1) + 2
    print(age)
    # return age
fun(4)
最佳答案
2022-4-30 09:41:40

在 IDLE 交互界面直接操作 fun(4) 是可以看到函数返回值的,即函数的 return 值,但是从代码编辑器中运行过来是不会直接打印返回值的,需要你加上 pirnt

你可以自己去 IDLE界面 直接操作代码试试,只要有返回值,IDLE界面都会打印出来,反之如果函数没有显式设置返回值,IDLE就会打印一个空的行,实际上是 None

但是你在编辑器里面调用是不会直接打印返回值的,必须要带上print

而这两个关键字主要差别在于,一个是函数(print),一个是特殊作用的关键字(return)

在函数中,若许要将结果返回给外部使用,那么需要利用 return 设置返回值才可在外部接收到数值

而使用 print 函数只是单纯的将 print 函数中的内容打印到 Python 控制台,以供查看,是不能设置函数返回值的

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

使用道具 举报

发表于 2022-4-30 08:33:32 From FishC Mobile | 显示全部楼层
print是给人看的
return是返给调用者的
它俩没有任何关联,我也搞不懂为啥这个问题总是有人在问
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-30 08:35:10 From FishC Mobile | 显示全部楼层
return终止函数调用,并反馈结果,print() 只是一个普通函数,其作用是打印变量内容,二者毫无关系。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-30 09:02:56 From FishC Mobile | 显示全部楼层
我猜楼主应该是习惯性用 Python 的 IDLE 写代码吧?

所以才建议新手自行下载自己喜欢的编译器写代码,不建议用 Python 原本的 IDLE(不然不知道什么时候该用 print())
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-30 09:41:40 | 显示全部楼层    本楼为最佳答案   

在 IDLE 交互界面直接操作 fun(4) 是可以看到函数返回值的,即函数的 return 值,但是从代码编辑器中运行过来是不会直接打印返回值的,需要你加上 pirnt

你可以自己去 IDLE界面 直接操作代码试试,只要有返回值,IDLE界面都会打印出来,反之如果函数没有显式设置返回值,IDLE就会打印一个空的行,实际上是 None

但是你在编辑器里面调用是不会直接打印返回值的,必须要带上print

而这两个关键字主要差别在于,一个是函数(print),一个是特殊作用的关键字(return)

在函数中,若许要将结果返回给外部使用,那么需要利用 return 设置返回值才可在外部接收到数值

而使用 print 函数只是单纯的将 print 函数中的内容打印到 Python 控制台,以供查看,是不能设置函数返回值的

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

使用道具 举报

 楼主| 发表于 2022-4-30 10:24:19 | 显示全部楼层
Twilight6 发表于 2022-4-30 09:41
在 IDLE 交互界面直接操作 fun(4) 是可以看到函数返回值的,即函数的 return 值,但是从代码编辑器中运行 ...

TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'  那这个报错是因为什么原因额
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-30 10:25:24 | 显示全部楼层
代码小白liu 发表于 2022-4-30 10:24
TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'  那这个报错是因为什么原因额



你尝试着将一个 None 与 一个 int 整形数值进行 + 加法操作,导致报错

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

使用道具 举报

发表于 2022-4-30 12:45:59 | 显示全部楼层
傻眼貓咪 发表于 2022-4-30 09:02
我猜楼主应该是习惯性用 Python 的 IDLE 写代码吧?

所以才建议新手自行下载自己喜欢的编译器写代码,不 ...

pycharm就很好,不过新手一般是先用的idle吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-30 12:54:28 From FishC Mobile | 显示全部楼层
洛与春风 发表于 2022-4-30 12:45
pycharm就很好,不过新手一般是先用的idle吧

用 idle 不是不能,前提是不要只懂用,却不知其道理,通常遇到同样的问题:
(一)缩排问题
(二)为什么 IDLE 不能直接拷贝贴上代码?
(三)为什么有时代码打印不出来?不懂什么是 print() 和 return 分别。

***以上就是新手的十万个为什么。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-30 12:58:18 | 显示全部楼层
傻眼貓咪 发表于 2022-4-30 12:54
用 idle 不是不能,前提是不要只懂用,却不知其道理,通常遇到同样的问题:
(一)缩排问题
(二)为什 ...

新手一开始学的时候,网课啊啥的推荐的就是自带的idle,我也是后来学了一段时间才知道的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-30 18:32:59 From FishC Mobile | 显示全部楼层
洛与春风 发表于 2022-4-30 12:58
新手一开始学的时候,网课啊啥的推荐的就是自带的idle,我也是后来学了一段时间才知道的

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-18 12:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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