首页 > 后端开发 > Python教程 > 为什么 print(lyrics()) 返回'None”,即使函数 `lyrics()` 打印'第一行”?

为什么 print(lyrics()) 返回'None”,即使函数 `lyrics()` 打印'第一行”?

DDD
发布: 2024-12-08 22:28:13
原创
887 人浏览过

Why does print(lyrics()) return

为什么输出“无”?解开两个打印语句

使用以下函数时会出现一个特殊的问题:

def lyrics():
    print("The very first line")
print(lyrics())
登录后复制

输出莫名其妙地返回“第一行”,而不是预期的“第一行”第一行”,然后是“无”。

揭开隐藏的面纱真相

这种令人困惑的行为背后的罪魁祸首在于两个打印语句的存在。在歌词函数中,第一个语句负责显示“第一行”。但是,该函数没有显式返回值,这意味着 Python 为其分配了默认值 None。

函数外部的第二个 print 语句然后尝试输出歌词()返回的值。由于该函数实际上返回 None,因此它会在终端上打印“None”。

纠正问题:接受 Return 语句

要纠正这种情况并确保所需的结果输出,修改歌词函数以显式返回一个值。通过添加 return 语句,您可以指定函数生成的值。

例如,考虑以下代码:

def lyrics():
    print("The very first line")
    return None

print(lyrics())
登录后复制

现在,代码将正确打印“第一个line”,因为歌词函数中的 return 语句显式返回 None。

理解 Return默认

值得注意的是,如果在函数中省略 return 语句,Python 会自动返回 None。虽然代码中没有明确说明,但这种行为对于理解为什么未显式指定返回值的函数仍然打印 None 至关重要。

其他示例

进一步了解澄清一下,请考虑以下代码片段:

def test1():
    print("In function.")

a = test1()
print(a)  # Prints None

print(test1())  # Prints "In function." and then None

test1()  # Prints "In function." and returns None (not printed)
登录后复制

在此示例中,test1() 由于没有返回而隐式返回 None 陈述。因此,后续打印语句的行为如前所述。

为了确保特定的返回值,请使用具有所需值的 return 语句。例如:

def test():
    return "ACV"

print(test())  # Prints "ACV"

a = test()
print(a)  # Prints "ACV"
登录后复制

通过在 test() 函数中显式返回“ACV”,输出可以正确显示预期值。

以上是为什么 print(lyrics()) 返回'None”,即使函数 `lyrics()` 打印'第一行”?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板