从它返回的打印对象中禁用Python return语句

时间:2009-06-24 19:03:18

标签: python

我想禁用“return”来打印它返回python shell的任何对象。

例如示例python脚本test.py如下:

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

现在,如果我这样做:

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

这总是给我两个python shell打印。 我只是想打印并获得返回的对象。

6 个答案:

答案 0 :(得分:11)

打印的原因不是return语句,而是shell本身。 shell会打印在命令行上执行操作的任何对象。

这就是发生这种情况的原因:

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

最后一个语句的结果是a的值(因为它没有分配给其他任何东西)。所以它是由shell打印的。

问题不是“返回”而是shell本身。但这不是问题,因为工作代码规范不会在交互式shell中执行(因此,不会打印任何内容)。因此,没问题。

答案 1 :(得分:9)

无法配置Python shell抑制打印函数调用的返回值。但是,如果将返回的值分配给变量,则不会打印它。例如,如果你说

rv = func1()

而不是

func1()

然后什么都不打印。

答案 2 :(得分:5)

通常,从函数内打印,然后返回值,不是一个好主意。

事实上,在功能中打印通常是错误的。大多数情况下,函数会在程序中多次调用。有时您想要打印该值,通常您只是想将这些数据用于某些内容。

让函数返回它的值。如果这是正确的事情,那么让调用该函数的代码将其打印出来。

答案 3 :(得分:0)

如果您不希望它显示该值,则将该函数的结果分配给变量:

H:\test>copy con test.py
def func1():
  list = [1,2,3,4,5]
  print list
  return list
^Z
        1 file(s) copied.

H:\test>python -i test.py
>>> func1()
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]
>>> x = func1()  # assign result to a variable to suppress auto printout
[1, 2, 3, 4, 5]
>>>

答案 4 :(得分:0)

您可以使用类似的东西

_ = my_func()

答案 5 :(得分:0)

简单的解决方案是删除退货。

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

由于外壳程序将不会打印出None值。

如果仍然需要返回其他函数调用的值,请考虑在顶部添加shell API。

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

def func1():  # Shell version of _func1.
    _func1()  # Don't return the value.

现在,在外壳中使用_func1时,您的代码可以调用func1

>>> func1()
[1, 2, 3, 4, 5]
>>>

注意:我知道这是一个老问题,但是我来自Google搜索,所以其他人也是如此。