我想禁用“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打印。 我只是想打印并获得返回的对象。
答案 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搜索,所以其他人也是如此。