2016-09-07 10 views
0

Я очень новичок в Python. Я хочу вернуть переменное количество объектов (в конечном итоге будет lists или pandas), в идеале с их оригинальным именем.Как вернуть (переменное число) объектов с их исходным именем в функции в Python

До сих пор я смотрю на что-то вроде этого:

def function(*Args): 
    Args = list(Args)  
    for i in range(len(Args)): 
     Args[i] += 1 
     print Args[i] 
    return *all variables with original name, in this case a, b, c, d * 

a=1 
b=2 
c=3 
d=4 

a, b, c, d = function(a, b, c, d) 

Любая помощь, идеи или комментарии были бы очень признательны. Благодарю.

+1

Возможный дубликат [Как создать переменное число переменных в Python?] (Http://stackoverflow.com/questions/1373164/how-do-i-create-a-variable-number- of-variables-in-python) –

+2

На самом деле нет способа сделать это - вам тоже этого не нужно. Например, значение '1' могло иметь _many_ имена в вызывающем пространстве имен:' a = aa = aaa = 1'. В зависимости от того, что вы хотите сделать, вы можете использовать некоторую встроенную функцию 'locals' или' globals', но обычно вам, вероятно, это не понадобится. Что это за эндшпиль? Почему вы хотите этого? – mgilson

+0

Если ваша функция должна была называться как функция (float («NaN»), a, если b else c, d + e, 4 + 5) ', каковы« оригинальные »имена ее аргументов? – kindall

ответ

0

Вы просто хотите вернуть кортеж?

def function(*Args): 
    Args = list(Args)  
    for i in range(len(Args)): 
     Args[i] += 1 
     print Args[i] 
    return Args 

a, b, c, d = function(a, b, c, d) 
+0

Я согласен, что это делает то, что ОП запрашивает в конкретном примере, но мне интересно, действительно ли они хотят что-то эквивалентное '* Args = function (* Args)'? – dblclik

+0

Эта функция может использоваться как 'Args = function (* Args)'? Я не уверен, что именно здесь просят, но я не могу понять, что еще может быть – Eric

+0

Я полностью согласен - мне интересно, должен ли OP не просто вернуть «dict» с помощью Dummy ID как ключ, а также имя и значение как кортеж, чтобы он всегда имел только одно возвращаемое значение. Он не очень хорошо сформирован, поскольку его спрашивают. – dblclik

0

Тем временем я попробовал это как @ Xavier C. предложил и, похоже, работает. списки/входные аргументы, которые я бы назвал после отрасли, и поэтому хотели бы преподнести. Есть ли способ достичь этого?

def BBGLiveRequest(*args): 
    data = [] 

    for i in range(len(args)):  
     print args[i] 
     result = BLPTS(args[i], ['PX_Last'])  
     result.get() 
     print result.output 
     data.append(result.output) 

    return data 
+0

Используйте словарь, заменив 'data = []' на 'data = {}' и 'data.append (result.output)' с 'data [args [i]] = result.output'. Затем вы можете получить доступ к каждому результату с помощью 'data ['oneofinputarguments']'. Кстати, если вы установите цикл в 'for i in * args', переменная' i' автоматически будет равна 'args [i]' в вашем случае. Это одна из лучших функций Python и экономит массу ввода. – StefanS