2013-04-11 3 views
3

가변 인수를 변수로 사용하는 함수가 있습니다. 어떻게 것 나는 나의 myfunc2()Python에서 함수에 n 개의 인수 전달

def myfunc1(*args): 
    arguments = [i for i in args] 
    #doing some processing with arguments... 
    some_list = [1,2,3,4,5] # length of list depends on what was passed as *args 
    var = myfunc2(???) 

내가 생각할 수있는 유일한 방법은 인수로 myfunc2()에 목록 또는 튜플을 전달하는 것입니다,하지만 어쩌면 더 우아한 해결책은 내가 지금 거기에 아래의 예 some_list의 내용 myfunc2() 및 몇 가지 다른 기능을 다시 작성할 필요가 없습니다. 이 꽤 널리 사용하고 쉽게 googleable입니다

+0

[Python : 가변 인수를 함수에 전달할 수 있습니까?] (http://stackoverflow.com/questions/919680/python-can-a-variable-number-of-arguments-be) -f 함수) – karthikr

+0

'args [i for args]'args가 필요하지 않습니다 ... (터플 대신리스트로 만들 필요가 있습니다) –

+0

정말로 편집하십시오 당신의 질문이 혼란 스럽습니까? 인수를 함수에 전달하는 방법은 무엇입니까? –

답변

3

args은 튜플입니다. *argsarg을 인수 목록으로 변환합니다. 그루퍼의

myfunc2(a, b, c) 

* 운영자 :

newargs = (a, b, c) 
myfunc2(*newargs) 

또는 인수를 전달하기 위해

def myfunc2(*args): 
    pass 

, 당신은 다음 하나 하나를 통과 할 수 있습니다 : 당신은 myfunc2 같은 방법으로 myfunc1로 정의 두 기술의 조합을 사용하여 :

newargs = (b, c) 
myfunc2(a, *newargs) 

dict를 명명 된 인수 목록으로 변환하는 ** 연산자에도 동일하게 적용됩니다.

+0

고마워, 그게 내 문제를 해결하는 데 도움이됩니다. 그래서, 기본적으로 튜플 세트를 준비해야하며 두 번째 함수 호출에'* args'와 같은 것을 사용할 수도 있습니다. –

2

... 임 당신이 당신에 대해 어떻게 해결책

def myfunc1(*args): 
    arguments = args 
    some_other_args = [1,2,3,4] 
    my_var = myfunc2(*some_other_args) #var is not an awesome variablename at all even in examples 
+0

죄송합니다. myfunc1과 myfunc2에 대한'* args '가 다르기로되어 있음을 잊어 버렸습니다. 예 : 'myfunc1()'은 "a", "b", "c"그리고'myfunc2()'를 취해야한다. 1,2,3,4,5 –

+0

그래서'myfunc2 (1,2,3,4, 5, ...)'? 나는 질문을 이해하고 있는지 확신 할 수 없다 ... –

+0

나는 초기 질문을 업데이트했다. 혼란에 대한 미안합니다 –

0

을 찾을 수 couldnt는 그 무엇을 검색했는지 궁금 :

myfunc(*arguments) 

같은 것은 키워드 인수 등을 함께 간다 예 :

def myfunc(*args, **kwargs): 
    # pass them to another, e.g. super 
    another_func(*args, **kwargs)