2011-05-13 22 views
1

我想弄清楚是否有可能將兩個不同的返回值從一個python函數分配給兩個單獨的變量。是否有可能從Python函數分配兩個不同的返回值到兩個單獨的變量?

以下是函數,它返回一個名稱城市的值。

DEF認證():

name = raw_input("What is your name? ") 

city = raw_input("What city do you live in? ") 


if name != "Jerry Seinfeld" or city != "New York": 
    print """ 

    Access denied 

    """ 

else: 
    print """ 


    Authenticated 

    """ 
    return name and city 

現在,我要返回的值分配給兩個變量,a和b

我只知道如何分配一個值,像這樣。

A =身份驗證()

(這實際上賦予了城市價值的,我猜是因爲「返回名稱」之前進來的代號爲「回城」)

是什麼我試圖做到可能嗎?

+1

重複的(http://stackoverflow.com/questions/354883/how-do-you-return-multiple [你如何在Python中返回多個值?] -python-in-python) – GreenMatt 2011-05-13 17:22:17

+0

不完全重複。這會詢問「如何以及如何捕捉?」,詢問「哪個?」。 – 2011-05-13 17:24:38

回答

8

Python支持元組拆包

def foo(): 
    return 'bar', 42 

a, b = foo() 

它甚至可以與其他序列一起使用。

a, b = [c, d] 

Python 3.x擴展了語法。

a, b, *c = (1, 2, 3, 4, 5) 
2

你應該改變return name and city(因爲「和」的使用是邏輯表達式)返回一個元組return (name, city)。現在,您可以指定與元組拆包值:

name,city = authenticate() 
相關問題