簡體   English   中英

列表和變量可以從函數中返回嗎?

[英]Can a list and variables be returned from a function?

我可以做這個..

def funcOne():
    a,b = funcTwo()
    print a, b

def funcTwo():
    .....
    ......   
    return x, y

但是,列表也可以從funcTwo返回並以2個值顯示在funcOne中嗎? 似乎沒什么用

當您返回多個值時,您要做的就是構建包含這些值的單個元組,然后將其返回。 您可以在其中包含任何內容的情況下構造元組,並且列表會出現在任何內容下方:

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
>>> 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')
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 -ed返回值相同的結果,因為print('a','b','c')打印('a','b','c')但是您可以執行以下操作:

def funcOne():
    print(','.join(['c','d',funcTwo().__repr__()]))
>>> 
c,d,['a', 'b']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM