문제

다음과 같은 방법이 있다고 가정해 보겠습니다.

def methodA(arg, **kwargs):
    pass

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

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

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

methodA의 **kwargs가 methodB에 **kwargs로 전달되도록 하려면 어떻게 해야 합니까?

도움이 되었습니까?

해결책

kwargs 변수 앞에 별표를 넣으십시오.이는 Python이 변수(사전으로 간주됨)를 키워드 인수로 전달하게 합니다.

methodB("argvalue", **kwargs)

다른 팁

여담으로:메소드 대신 함수를 사용하는 경우 functools.partial을 사용할 수도 있습니다.

import functools

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

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

마지막 줄은 호출 시 첫 번째 인수를 "argvalue"로 설정하고 다른 모든 함수를 전달하여 foo를 호출하는 "bar" 함수를 정의합니다.

bar(5, myarg="value")

전화할 것이다

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

불행하게도 메소드에서는 작동하지 않습니다.

몇 가지 실험을 통해 다음과 같은 사실을 알아냈습니다.

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

지금은 분명해 보이는데...

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top