鱼C论坛

 找回密码
 立即注册
查看: 2049|回复: 5

[已解决]为何返回的结果中还有一个None?

[复制链接]
发表于 2023-5-19 10:17:01 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 lzb1001 于 2023-5-19 10:18 编辑

def add(num1, num2):
        result = num1 + num2
        print(result)

>>> print(add(1, 2))
3
None
>>> point = add(1, 2)
3
>>> point
>>> print(point)
None

为何返回的结果中会有一个None?
最佳答案
2023-5-21 11:26:59
本帖最后由 allen-xy 于 2023-5-21 11:29 编辑
lzb1001 发表于 2023-5-19 12:20
能结合上楼层的例子说说?

def add(x, y):
    result = x + y
    print(result)

print(add(1,2))
3
None

def add2(x, y):
    result = x + y
    print(result)
    return "加法操作完成"

print(add2(1,2))
3
加法操作完成

这看下函数add和函数add2的区别,就明白了。
函数add,没有手动指定return,返回了函数体中的print语句的加法结果,还默认返回了None(这个就是函数的默认return)。
函数add2,手动指定return,返回了函数体中的print语句的加法结果,还返回了return语句中的字符串。


print(add(1, 2)),相当于执行了两次print,第一次是函数体中的print,第二次是函数的return结果(因为函数体中没有写return,所以返回了默认return结果:None)。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-19 10:18:23 | 显示全部楼层
这是因为函数 add() 并没有显式地返回任何值,所以当你在调用 add() 函数并打印它的返回值时,实际上打印的是Python默认的返回值 None 。如果你想要返回 result 的值,你需要在函数中使用 return 语句,例如:
def add(num1, num2):
    result = num1 + num2
    return result

print(add(1, 2))

这将会输出:
3

在这个例子中, add() 函数将会返回计算结果,而不会打印它。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-19 12:08:56 | 显示全部楼层
isdkz 发表于 2023-5-19 10:18
这是因为函数 add() 并没有显式地返回任何值,所以当你在调用 add() 函数并打印它的返回值时,实际上打印的 ...

def add(num1, num2):
        return (num1 + num2)
        print(num1 + num2)
>>> add(1, 2)
3 # 上面两行代码只执行一行?

而颠倒顺序后:
def add(num1, num2):
        print(num1 + num2)
        return (num1 + num2)
>>> add(1, 2)
3
3
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-19 12:15:11 | 显示全部楼层
函数结尾如果没有return ...,会默认返回一个None。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-19 12:20:49 | 显示全部楼层
allen-xy 发表于 2023-5-19 12:15
函数结尾如果没有return ...,会默认返回一个None。

能结合上楼层的例子说说?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-21 11:26:59 | 显示全部楼层    本楼为最佳答案   
本帖最后由 allen-xy 于 2023-5-21 11:29 编辑
lzb1001 发表于 2023-5-19 12:20
能结合上楼层的例子说说?

def add(x, y):
    result = x + y
    print(result)

print(add(1,2))
3
None

def add2(x, y):
    result = x + y
    print(result)
    return "加法操作完成"

print(add2(1,2))
3
加法操作完成

这看下函数add和函数add2的区别,就明白了。
函数add,没有手动指定return,返回了函数体中的print语句的加法结果,还默认返回了None(这个就是函数的默认return)。
函数add2,手动指定return,返回了函数体中的print语句的加法结果,还返回了return语句中的字符串。


print(add(1, 2)),相当于执行了两次print,第一次是函数体中的print,第二次是函数的return结果(因为函数体中没有写return,所以返回了默认return结果:None)。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-27 12:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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