Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在多行上返回多个值_Python_Python 3.x - Fatal编程技术网

Python 如何在多行上返回多个值

Python 如何在多行上返回多个值,python,python-3.x,Python,Python 3.x,我想知道是否有一种方法可以返回多个值并在两行或多行之间隔开。我当前的示例代码: def exampleReturn(): x = 'Hello' y = 'World' return (x,y) #('Hello', 'World') 目前,它只返回元组中的x和y。但是,我想知道是否有办法在两行上返回这两个值,如下所示: exampleReturn() >>>'Hello' 'World' 像上面的例子一样,我希望它们作为字符串而不是元

我想知道是否有一种方法可以返回多个值并在两行或多行之间隔开。我当前的示例代码:

def exampleReturn():
    x = 'Hello'
    y = 'World'
    return (x,y)  #('Hello', 'World')
目前,它只返回元组中的x和y。但是,我想知道是否有办法在两行上返回这两个值,如下所示:

 exampleReturn()
 >>>'Hello'
    'World'
像上面的例子一样,我希望它们作为字符串而不是元组放在单独的行上,并且两行的起始位置相同。

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

print("\n".join(exampleReturn()))
如果
exampleReturn()
返回数字而不是字符串,请执行以下操作:

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

您对返回值有一个根本性的误解。返回值是从函数返回的东西;它可以是任何类型的对象:字符串、整数、元组、列表或某些复杂对象。没关系

返回值通常从不显示。它们是供您在变量中捕获的

例如,
str.split()。如果在Python脚本中像这样使用它,则不会得到任何结果:

'foo,bar'.split(',')
返回值被丢弃了。这个脚本的视觉输出将是空的

为了处理返回值,您需要在变量中捕获它们,或者直接将它们传递给其他对象:

x = 'foo,bar'.split(',')
这将捕获变量
x
中返回的列表,然后可以使用该变量

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

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

# or directly:
print('foo,bar'.split(','))
这就是返回值的全部内容

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

>>> 'foo,bar'.split(',')
['foo', 'bar']
['foo','bar']
split
调用的返回值,因此它不会自动显示。交互式控制台将获取否则丢弃的返回值并显示它。但这完全是交互式控制台的一个功能,我们无法影响它。我们甚至不能指望它发生

如果需要某个输出,则应自己打印:

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

在对应于的交互式提示中,您可以看到两种类型的输出

  • 求值,无论什么
    obj.\uuu repr\uuu()
    返回(当您只需按Enter键时)
  • 打印到
    stdout
    ,无论什么
    obj.\uu str\uu()
    返回(当您调用
    print(obj)
    时)
  • 在你的问题中,你看到的是第一个问题。如果要显示换行符,则需要考虑打印()。有很多方法可以做到这一点。一种可能是,

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

    最简单、最好的方法是将该函数返回到列表或其他内容中,然后尝试以您想要的方式打印列表

    返回值与显示值无关。如果你想打印,那就打印。你想要什么?您希望返回值是一个元组并以不同方式显示它,还是希望返回值是一个带换行符的字符串?很抱歉我的问题模棱两可。刚刚编辑过。我希望它是一个带换行符的字符串。返回值仅在交互式控制台中显示以方便使用。但这只是交互式REPL的一个功能。这不是你能影响的任何事情。如果您想显示某些内容,请将其打印出来。下面的答案更合适,但您也可以将字符串打包为
    \n
    ,并将其作为一个值返回:
    return“\n”。加入(x,y)
    非常感谢您的深刻回答。很明显,正如你所说,我没有真正理解“退货”和“打印”之间的区别。同样,我一直在使用控制台来尝试和错误我的所有代码,所以我也误解了关于“丢弃”返回值的部分。