在学习Python和浏览互联网时,我在w3schools.com上偶然发现了一段代码。我尝试使用他们的内置站点pythonidle和我自己的Python 3.9.0
Shell运行它。我得到的是两种不同的输出
我想知道哪个输出是正确的输出,为什么它提供两种不同的输出。
代码及其输出
内置站点Python空闲
Python 3.9.0 Shell
请注意,当使用内置站点Python IDLE运行代码时,数字21只打印(输出)一次,而当使用Python 3.9.0 Shell运行代码时,数字21打印(输出)两次
我自己的调试
我尝试了一个简单的打印语句调试。检查结果只有一个不同,使用Python 3.9.0 Shell执行最后一个返回行并输出最后一个结果,而使用内置站点Python IDLE,最后一个返回要么未执行,要么未输出,在这种情况下,我相信是前者,我相信正确的输出是Python 3.9.0 Shell,但我不知道为什么会有两种不同的输出
Print Statement Using Python 3.9.0 ShellResult Part 1Result Part 2
Print Statement Using Built-in site Python IDLEResult Part 1Result Part 2
源代码
def tri_recursion(k):
if(k>0):
result = k + tri_recursion(k-1)
print(result)
else:
result = 0
return result
tri_recursion(6)
您在末尾添加了一个
return result
语句。对于任何IDE,除非打印该值,否则不会显示该值。但是,IDLE也会打印返回值。从技术上讲,两个输出都是正确的,因为两个口译员都配置为执行不同的操作。作为一个小例子在IDLE上运行
foo()
会得到>>> 1
,而在其他IDE上则没有,因为没有print语句两者都是正确的,您需要了解pythonshell正在打印语句的输出。 当你写作时:
它将首先执行所有print inside函数,然后打印最后一次调用返回的值
两者都是正确的
站点上的内置python向您显示程序执行的输出。这相当于运行以下程序:
在代码末尾添加此项,将其另存为test.py并按如下方式运行:
结果是一样的
pythonshell向您显示REPL(Read-Eval-Print循环)的输出,Print语句将打印到屏幕上,但函数的返回值也会打印出来,因为REPL,所以无法避免这种情况,这是出于设计
您可以将函数设计为不返回任何内容,但它不再是递归的
相关问题 更多 >
编程相关推荐