我想知道是否有办法在2行或更多行之间返回多个值和空格。我目前的示例代码:
def exampleReturn():
x = 'Hello'
y = 'World'
return (x,y) #('Hello', 'World')
目前,这只会在元组中返回x和y。但是,我想知道是否有办法在这两行上返回这两个值:
exampleReturn()
>>>'Hello'
'World'
与上面的例子一样,我希望它们在单独的行中作为字符串而不是元组,并且两行都从相同的位置开始。
答案 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)
您在与
对应的交互式提示中看到两种输出obj.__repr__()
返回(当您只按Enter键时)stdout
,无论obj.__str__()
返回什么(当您致电print(obj)
时)在您的问题中,您所看到的是第一个。如果您想要新线显示,则您会关注print()
。有很多方法可以做到这一点。一种可能性是,
In [453]: x = exampleReturn()
In [454]: print(*x,sep="\n")
hello
world
答案 3 :(得分:0)
最简单,最好的方法是将该函数返回到列表或其他内容中,然后尝试根据需要打印列表