我可以这样做..
def funcOne():
a,b = funcTwo()
print a, b
def funcTwo():
.....
......
return x, y
但是也可以从funcTwo返回一个列表并在funcOne ALONG中显示2个值吗?似乎什么都没有用
答案 0 :(得分:5)
当您返回多个值时,您所做的只是构建包含这些值的单个元组,然后返回它。您可以使用其中的任何内容构造元组,并列出任何内容:
def funcOne():
a, b, some_list = funcTwo()
print a, b, some_list
def funcTwo():
...
some_list = [...]
return x, y, some_list
如果您的意思是希望从列表中返回值,您可以通过返回列表来执行此操作,解压缩也适用于列表:
def funcOne():
a, b, = funcTwo()
print a, b
def funcTwo():
...
some_list = [x, y]
return some_list
或者,如果要使用列表中的所有值扩展返回值,只需要将要返回的值列表与额外值列表连接起来:
def funcOne():
a, b, c, d = funcTwo()
print a, b, c, d
def funcTwo():
...
some_list = [z, w]
return [x, y] + some_list
答案 1 :(得分:1)
>>> def list_and_vars():
a, b = "fee", "fi"
c = ["fo", "fum"]
return a, b, c
>>> print list_and_vars()
('fee', 'fi', ['fo', 'fum'])
>>> a, b, [c, d] = list_and_vars()
>>> a, b, c, d
('fee', 'fi', 'fo', 'fum')
答案 2 :(得分:1)
def funcOne():
f2x,f2y = funcTwo() #tuple unpacking var1,var2 = (val1,val2)
print a,b,list((lf2x,f2y)) #convert tuple to list
def funcTwo():
return x, y #actually returns (x,y)
如果我们查看以下内容
def funcTwo():
return 'a','b'
print(funcTwo())
我们可以看到funcTwo
返回包含'a','b'
的元组:
>>>
('a', 'b')
这样Python只返回一个值,但是它的元组解包可以使它看起来不是这样:
var1,var2 = funcTwo()
print(var1)
print(var2)
>>>
a
b
你可以明确地返回一个列表:
def funcTwo():
return ['a','b']
print(funcTwo())
在这种情况下,您仍然返回一个值,它只是一个列表。例如:
def funcTwo():
return ['a','b']
def funcOne():
return 'c','d',funcTwo()
print(funcOne())
会打印
>>>
('c', 'd', ['a', 'b'])
再次,您可以看到,我们只返回了一个值,这是一个由我们希望返回的所有值组成的元组。
如果你想在funcOne
中打印一些东西,除非你使用了字符串格式,你会得到与print
相同的结果 - 因为print('a','b','c')
打印('a','b','c')
而导致返回值但是你可以这样做:
def funcOne():
print(','.join(['c','d',funcTwo().__repr__()]))
>>>
c,d,['a', 'b']