You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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,完全符合你想要的连续效果。

再补个函数执行的核心逻辑

当你调用一个函数时,程序会按顺序执行函数内部的每一条语句:

  1. 先执行print语句,输出你写的提示文本;
  2. 然后执行return语句,把计算结果返回给调用这个函数的地方;
  3. 返回值本身不会自动打印,除非你主动用print()去输出它,或者在交互式环境里被解释器自动打印。

这样应该就完全明白啦!

内容的提问来源于stack exchange,提问作者tk79

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:58:22