Python match-case中return在解释器生效编辑器无效的原因咨询
为什么Python函数里的
return在脚本运行时无输出,交互模式却正常? 这个现象和match-case语法完全无关,核心原因是Python交互解释器与脚本文件运行时,对函数返回值的处理逻辑不同:
交互解释器的自动打印特性:
当你在Python交互模式(直接输入python/python3进入的命令行环境)中调用函数,解释器会自动将函数的返回值输出到控制台——这是交互模式为方便调试提供的默认行为。比如你输入http_error(404),解释器会直接显示返回的"Not found"字符串。脚本文件的静默执行逻辑:
当你把代码保存为.py脚本文件运行时,Python只会执行文件中的语句,但不会自动打印任何函数的返回值。如果脚本只定义了函数却没调用,运行后自然没有输出;就算调用了函数(比如写了http_error(404)),返回值也只是留在内存中,不会主动显示到控制台。print语句的作用:print()是主动向标准输出(控制台)写入内容的语句,不管是交互模式还是脚本运行,只要执行了print(),就会把内容显示出来。而return的作用只是将值从函数传递给调用者,调用者如果不主动处理(比如打印、赋值给变量),这个值就不会被输出。
要让脚本运行时显示函数返回值,你需要主动打印返回结果,比如:
def http_error(status): match status: case 400: return "Bad request" case 404: return "Not found" case 418: return "I'm a teapot" case _: return "Something's wrong with the internet" # 调用函数并打印返回值 print(http_error(404))
内容的提问来源于stack exchange,提问作者Uchenna Adubasim
相关产品推荐
相关产品推荐

