Python函数返回值打印异常求助:输出重复且内容不连续
解惑:函数内print和返回值的输出问题
嘿,我刚学Python的时候也踩过这个坑!让我帮你理清楚到底是怎么回事~先把你没写完的代码补全成合理的版本(应该是这样吧?):
def add(a, b): print "ADDING %d + %d" % (a, b) return a + b def subtract(a, b): print "SUBTRACTING %d - %d" % (a, b) return a - b def multiply(a, b): print "MULTIPLYING %d * %d" % (a, b) return a * b
你遇到的问题,大概率是两种情况之一,咱们一个个拆解:
情况1:你在Python交互式环境里调用函数
比如你打开Python shell,直接敲了add(3, 5)然后回车,这时候会出现两个输出:
ADDING 3 + 5 8
看起来像两次调用,但其实是一次调用产生了两个输出:
- 第一个是函数内部的
print语句执行的结果; - 第二个是Python交互式环境的“自动打印返回值”特性搞的鬼——只要你输入的表达式有非
None的结果,它就会自动帮你把这个结果打印出来,哪怕你没写print()。
解决方法很简单:如果不想让解释器多打印一次,把调用结果赋值给变量就行:
result = add(3, 5)
这样只会输出函数内部的ADDING 3 + 5,返回值8会存在result里,不会被自动打印。
情况2:你在代码里重复调用了函数
比如你写了这样的代码:
add(3, 5) print(add(3, 5))
这时候就真的是两次调用函数了:
- 第一次调用
add(3,5):执行内部print,输出ADDING 3 + 5,返回值8但没人处理; - 第二次调用
add(3,5):又执行一次print,输出ADDING 3 + 5,然后返回值8被print()函数输出。
这种情况的解决方法是:只调用一次函数,把返回值存起来复用:
sum_result = add(3, 5) print(sum_result)
这样就只会输出一次ADDING 3 + 5,紧接着输出8,完全符合你想要的连续效果。
再补个函数执行的核心逻辑
当你调用一个函数时,程序会按顺序执行函数内部的每一条语句:
- 先执行
print语句,输出你写的提示文本; - 然后执行
return语句,把计算结果返回给调用这个函数的地方; - 返回值本身不会自动打印,除非你主动用
print()去输出它,或者在交互式环境里被解释器自动打印。
这样应该就完全明白啦!
内容的提问来源于stack exchange,提问作者tk79
相关产品推荐
相关产品推荐

