2008-09-09 4 views
11

에 지정된 변수 인수에 전달 나는 다음과 같은 방법을 말해봐 : methodA에서파이썬

def methodA(arg, **kwargs): 
    pass 

def methodB(arg, *args, **kwargs): 
    pass 

내가 kwargs로에 전달 methodB를 호출하고 싶습니다. 그러나 다음과 같이 methodA을 정의하면 두 번째 인수가 명명 된 변수 인수가 아닌 위치 지정 인수로 전달됩니다.

def methodA(arg, **kwargs): 
    methodB("argvalue", kwargs) 

어떻게 확인 methodA에서 ** kwargs로는 methodB에 kwargs로 **로 전달되는 것을 확인합니까?

답변

33

kwargs 변수 앞에 별표를 붙이십시오. 이것은 파이썬이 (사전이라고 가정하는) 변수를 키워드 인수로 전달하게합니다. 로

methodB("argvalue", **kwargs) 
+0

나는이 물건을 몇 번이나 찾아보아야하는지 모릅니다. 너무 간단하고 아직은. 그것이 분명하더라도 그것을 올려 줘서 고마워. :) – cybertoast

1

일부 실험과 나는이 하나 알아 냈 :

데프 methodA (ARG, ** kwargs로) : methodB ("argvalue", ** kwargs로)

분명 지금 보인다을 ...

2

여담 : 대신 방법의 기능을 사용하는 경우, 당신은 또한 functools.partial 사용할 수 있습니다

import functools 

def foo(arg, **kwargs): 
    ... 

bar = functools.partial(foo, "argvalue") 

기능 "바"를 정의 할 것이다 마지막 줄 것을 호출시 호출 "argvalue"로 설정 첫 번째 인수하고 다른 모든 기능 foo는 단지 전달 :

bar(5, myarg="value") 

가 호출

foo("argvalue", 5, myarg="value") 

불행히도 방법으로는 작동하지 않습니다.

+0

그것은 실제로 무엇을합니까? 질문과 무슨 상관이 있습니까? – rjmunro