Python에서 명명된 변수 인수 전달하기
-
09-06-2019 - |
문제
다음과 같은 방법이 있다고 가정해 보겠습니다.
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)
지금은 분명해 보이는데...
제휴하지 않습니다 StackOverflow