2014-05-09 4 views
-3

아래 함수에서 f은 튜플을 반환하고 g은 목록을 반환한다는 것을 알고 있습니다.튜플 대신 단일 값을 반환하는 방법은 무엇입니까?

def f(): 
    return 1,2 
def g(): 
    return [1,2] 
a,b=f() 
c,d=g() 

나는 많은 인수를 처리 할 수있는 함수를 작성했습니다.

def fun(*args): 
    return args 

이러한 인수는 이전 함수의 반환 값 때문에 위의 f 기능과 같이 입력됩니다.

output = fun(other_func()) 

한 인수를 출력이 사용될 때 하나 개의 값이, ... fun 개별 값이 같은 것을 알리는 검색 할 수로부터 그러나

output1, output2 = fun(other_func()) 

복귀하는 것이보다 아래 등에 무언가 ...

output = fun(other_func()) 

(1,) 

는 방법이있다 대신 튜플의 단일 요소를 반환해야 할 단 하나의 가치하지만 여전히 BEI의 기능을 한 경우가 하나 이상의 값을 반환 할 수 있습니까? 이 기능은 항상 하나의 요소 튜플을 반환하는 것입니다 알고 있다면

+1

튜플 할당이 작동하려면 예상 할 값의 수를 일반적으로 알고 있어야합니다. 당신은 항상'output, = fun (other_func())'를 사용하거나 튜플을 반환하지 않을 수 있습니다. –

답변

2

, 당신은 하나의 요소 튜플 할당을 사용할 수 있습니다

output, = fun(other_func()) 

하거나 인덱스 :

output = fun(other_func())[0] 

그러나에 이 경우는, 간단한 그렇게하지 마십시오, 튜플을 반환하지 않는도 적용될 수 :

output = other_func() 
0

*args이 튜플 인 경우 args을 반환하면 매개 변수가 하나만있는 경우에도 터플을 반환합니다.

def fun(*args): 
    if len(args) == 1: 
     args, = args 
    return args 
0

이 당신이 찾고있는 수 있습니다 무엇 :

당신은 아마 뭔가를해야한다. 이 방법을 사용하면 적어도 하나 이상의 인수가 있어야하지만 더 많은 인수가 있으면 다른 인수를 다른 인수에 포착하게됩니다.

def funct(*args): 
    return args 
# end funct 

if __name__ == '__main__': 
    foo, *other = funct(1, 2, 3, 4) 
    print(foo) 
관련 문제