如何在多行上返回多个值

时间:2016-04-07 09:27:13

标签: python python-3.x

我想知道是否有办法在2行或更多行之间返回多个值和空格。我目前的示例代码:

def exampleReturn():
    x = 'Hello'
    y = 'World'
    return (x,y)  #('Hello', 'World')

目前,这只会在元组中返回x和y。但是,我想知道是否有办法在这两行上返回这两个值:

 exampleReturn()
 >>>'Hello'
    'World'

与上面的例子一样,我希望它们在单独的行中作为字符串而不是元组,并且两行都从相同的位置开始。

4 个答案:

答案 0 :(得分:4)

您对返回值的基本误解。返回值是从函数返回的值;它可以是任何类型的对象:字符串,整数,元组,列表,复杂对象。没关系。

通常不会显示返回值。它们可以让你捕获变量。

例如str.split()拆分字符串,返回部分列表。如果你在Python脚本中使用它,那么你什么都得不到:

'foo,bar'.split(',')

返回值刚被丢弃。此脚本的视觉输出将为空。

为了对返回值执行某些操作,您需要在变量中捕获它们,或者直接将它们传递给其他内容:

x = 'foo,bar'.split(',')

这将捕获变量x中的返回列表,然后您可以使用它。

如果要显示返回值,则需要打印它:

x = 'foo,bar'.split(',')
print(x)

# or directly:
print('foo,bar'.split(','))

这就是返回值的全部内容。

现在,在交互式控制台REPL中,为了获得更好的反馈,控制台通常会显示您执行的内容的返回值(除非返回值为None)。这就是为什么在交互式Python控制台中,您会得到以下输出:

>>> 'foo,bar'.split(',')
['foo', 'bar']

['foo', 'bar']split调用的返回值,因此不会自动显示。交互式控制台将采用否则抛出的返回值并显示它。但这完全是交互式控制台的一项功能,而不是我们可以影响的功能。我们甚至不能依靠它发生。

如果您想要某个输出,那么您应该自己打印:

>>> x = 'foo,bar'.split(',')
>>> print('\n'.join(x))
foo
bar

答案 1 :(得分:1)

继续返回一个元组(只是数据);它比exampleReturn()中的打印格式更好的设计选择,因为它允许您稍后更改打印格式。然后,在其他地方,只需:

print("\n".join(exampleReturn()))

如果exampleReturn()返回数字而不是字符串,请执行:

print("\n".join([str(x) for x in exampleReturn()]))

答案 2 :(得分:0)

您在与

对应的交互式提示中看到两种输出
  1. 评估,无论obj.__repr__()返回(当您只按Enter键时)
  2. 打印到stdout,无论obj.__str__()返回什么(当您致电print(obj)时)
  3. 在您的问题中,您所看到的是第一个。如果您想要新线显示,则您会关注print()。有很多方法可以做到这一点。一种可能性是,

    In [453]: x = exampleReturn()
    In [454]: print(*x,sep="\n")
    hello
    world
    

答案 3 :(得分:0)

最简单,最好的方法是将该函数返回到列表或其他内容中,然后尝试根据需要打印列表