lzb1001 发表于 2023-5-19 10:17:01

为何返回的结果中还有一个None?

本帖最后由 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?

isdkz 发表于 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() 函数将会返回计算结果,而不会打印它。

lzb1001 发表于 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

allen-xy 发表于 2023-5-19 12:15:11

函数结尾如果没有return ...,会默认返回一个None。

lzb1001 发表于 2023-5-19 12:20:49

allen-xy 发表于 2023-5-19 12:15
函数结尾如果没有return ...,会默认返回一个None。

能结合上楼层的例子说说?

allen-xy 发表于 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)。
页: [1]
查看完整版本: 为何返回的结果中还有一个None?