2017-10-17 9 views
2

튜플 (또는 어쩌면 목록)을 값의 시퀀스 (인수)로 함수에 전달하고 싶습니다. 그런 다음 튜플을 * arg에 인수로 압축 해제해야합니다.* args에서 튜플을 전달

는 예를 들어,이 분명하다

tup = ('a1', 'a2', 4, 'something-else') 
func(tup) 

그리고 이것은 첫 번째 경우와 유사한 행동해야 :

def func(*args): 
    for i in args: 
     print "i = ", i 

func('a', 'b', 3, 'something') 

하지만 내가하고 싶은 것은 이것이다. 여기에 재 인쇄 및 평가를 사용해야하지만 정확히 어떻게해야하는지는 확실하지 않습니다.

필자는 함수에서 튜플을 전달한 다음 본문 내에서 튜플을 압축 할 수 있음을 알고 있지만 여기서 내 질문은 함수 호출 자체에서 압축을 푸는 방법입니다.

+6

그냥'func (* tup)'을 사용하십시오. –

답변

1

함수를 호출 할 때 튜플을 직접 압축 해제하는 데 func(*tup)을 사용할 수 있습니다.

>>> func(*tup) 
i = a1 
i = a2 
i = 4 
i = something-else 

이것은 func(tup[0], tup[1], tup[2], ...)과 동일합니다. 함수가 여러 개별 매개 변수를 예상하는 경우에도 마찬가지입니다.

구문에 대한 자세한 내용은 here을 참조하십시오.

0

튜플의 식별자 앞에 *을 넣음으로써 호출 중에 튜플을 언팩 할 수 있습니다. 이를 통해 압축을 해제해야하는 튜플과 그렇지 않아야하는 튜플을 쉽게 구별 할 수 있습니다. 이것은 예입니다 :

>>> MyTuple = ('one', 2, [3]) 
>>> 
>>> def func(*args): 
... for arg in args: 
... print(arg) 
... 
>>> 
>>> func(*MyTuple) 
one 
2 
[3] 
>>> 
>>> func(MyTuple) 
('one', 2, [3]) 
관련 문제