Python 为什么return给了我一个声明而没有

Python 为什么return给了我一个声明而没有,python,Python,当我运行以下代码时: def heart_value(name1,name2,name3): if name1 == "Rachel": return print("So you are Rachel!") elif name2 == "Rachel": print("Ah, so the second person is Rachel.") return print('Right?') elif name1 != 'Rac

当我运行以下代码时:

def heart_value(name1,name2,name3):
    if name1 == "Rachel":
        return print("So you are Rachel!")
    elif name2 == "Rachel":
        print("Ah, so the second person is Rachel.")
        return print('Right?')
    elif name1 != 'Rachel':
        return print('So Rachel is not the first person.')
    else:
        return print('ok')

print(heart_value("Rachel","Rachel","Mike"))
它给我的信息如下:


为什么它还打印
None

打印
函数不返回值。您只需要返回字符串
return'
,而不是
return print('')

它打印“None”的原因是您正在调用函数返回的值(即
None
),因此该值会出现在控制台中

i、 e

print()
函数执行一个操作(打印到控制台),但不返回任何内容

因此,当您使用语句
return(print(“ok”))
时,return函数调用print(“ok”)函数,该函数在控制台中打印文本“ok”,但不向
return()
函数返回任何内容,这意味着将无值传递回最初调用
heart\u value()
的函数


您需要做的是
return()
字符串对象本身(“ok”)。这样,当您
print()
函数
heart\u value()
时,
print()
语句将计算该函数,获取一个字符串对象,并将其打印。

因为您正在打印另一个
print
函数的输出。您可以通过只返回字符串而不是
print
函数来避免这种情况。
print
将某些内容作为
副作用打印到屏幕。
print()
的返回值始终为
None
,因为print函数不会像sum函数那样返回一个值,例如,我不知道是谁投票否决了这个问题,但我只投了2美分,所以它不应该被否决(因此我的抵消投票被否决)。总的来说,我认为如果你否决了一个新用户,你应该解释一下原因。对于一个新用户来说,在没有详细说明的情况下获得否决票并不是特别有帮助。正如OP演示的那样,它返回
None
,但这不是期望的返回值。@chepner OP问为什么它不返回,不是如何修复它以返回所需的值他们试图打印返回值的事实表明他们希望它返回打印的消息。非常感谢!问题解决了!非常感谢。现在一切正常!
So you are Rachel!
None
if name1 == "Rachel":
    return "So you are Rachel!"
elif name2 == "Rachel":
    return "Ah, so the second person is Rachel. \n Right?"
elif name1 != 'Rachel':
    return 'So Rachel is not the first person.'
else:
    return 'ok'

print(heart_value("Rachel","Rachel","Mike"))