禁用Python返回语句打印对象

11 投票
6 回答
25032 浏览
提问于 2025-04-15 12:28

我想要让“返回”这个操作不在Python命令行中打印出它返回的任何对象。

比如,一个示例的Python脚本test.py看起来是这样的:

def func1():
    list = [1,2,3,4,5]
    print list
    return list

现在,如果我执行以下操作:

python -i test.py
>>>func1()

这总是会在Python命令行中打印出两次内容。我只想打印一次并获取返回的对象。

6 个回答

4

一般来说,在一个函数里面打印内容,然后再返回值,这样做并不是个好主意。

实际上,在函数内部打印内容通常是错误的做法。因为函数在程序中通常会被调用多次。有时候你可能想打印这个值,但大多数情况下你只是想用这个数据做点别的事情。

让函数只返回它的值。如果需要打印,就让调用这个函数的代码来处理打印,这样做更合适。

13

这里提到的打印输出,并不是因为返回语句,而是因为命令行的环境(也就是我们称之为“shell”的东西)。在命令行中,任何操作的结果都会被打印出来。

这就是为什么会出现这种情况:

>>> a = 'hallo'
>>> a
'hallo'

最后一条语句的结果是变量a的值(因为它没有被赋值给其他东西)。所以这个值就被shell打印出来了。

问题不在于“返回”,而在于shell本身。但这并不是个问题,因为正常情况下,代码是在非交互模式下运行的(也就是说,不会打印任何东西)。所以,这并没有问题。

14

在Python的命令行中,没有办法设置让函数调用的返回值不打印出来。不过,如果你把返回的值赋给一个变量,那么它就不会被打印出来。比如,如果你这样写

rv = func1()

而不是这样写

func1()

那么就什么都不会被打印出来。

撰写回答