선택적 인수를 사용하여 Python 함수를 작성하는 방법
몇 가지 인수를 취하는 Python 함수가 있습니다. 일부 시나리오에서는 이러한 인수 중 일부를 생략 할 수 있습니다.
def some_function (self, a, b, c, d = None, e = None, f = None, g = None, h = None):
#code
인수를 d
통해 h
서로 다른 의미를 갖는다 문자열이다. 어떤 조합으로 전달할 선택적 매개 변수를 선택할 수 있어야합니다. 예를 들어, (a, b, C, d, e)
또는 (a, b, C, g, h)
, 또는 (a, b, C, d, e, f
, 또는 전부 (나의 선택).
함수를 오버로드 할 수 있다면 좋을 것입니다. 그러나 파이썬은 오버로드를 지원하지 않는다는 것을 읽었습니다. 필요한 int 인수 중 일부를 목록에 삽입하려고했는데 인수 불일치 오류가 발생했습니다.
현재 자리 표시 자로 누락 된 첫 번째 인수 대신 빈 문자열을 보내고 있습니다. 실제 값을 사용하여 함수를 호출하고 싶습니다.
이것을 할 수있는 방법이 있습니까? 인수 목록 대신 목록을 전달할 수 있습니까?
현재 ctypes를 사용한 프로토 타입은 다음과 같습니다.
_fdll.some_function.argtypes = [c_void_p, c_char_p, c_int, c_char_p, c_char_p, c_char_p, c_char_p, c_char_p]
다음과 같이 호출하십시오 obj.some_function( '1', 2, '3', g="foo", h="bar" )
. 필수 위치 인수 뒤에 특정 선택적 인수를 이름으로 지정할 수 있습니다.
* args 매개 변수를 사용하면 a,b,c
. 다음에 원하는만큼의 인수를 전달할 수 있습니다 . args-> c, d, e, f를 매핑하기위한 로직을 추가해야하지만 과부하의 "길"입니다.
def myfunc(a,b, *args, **kwargs):
for ar in args:
print ar
myfunc(a,b,c,d,e,f)
그리고 인쇄됩니다 c,d,e,f
마찬가지로 kwargs 인수를 사용한 다음 매개 변수의 이름을 지정할 수 있습니다.
def myfunc(a,b, *args, **kwargs):
c = kwargs.get('c', None)
d = kwargs.get('d', None)
#etc
myfunc(a,b, c='nick', d='dog', ...)
그런 다음 kwargs에는 다음에 키 값이 지정된 모든 매개 변수의 사전이 있습니다. a,b
'IT박스' 카테고리의 다른 글
IntelliJ IDEA가 인터페이스에서 Java로 클래스 구현으로 이동 (0) | 2020.06.14 |
---|---|
이 설치에서 프로젝트 유형을 지원하지 않습니다 (0) | 2020.06.14 |
하나의 명령 줄에서 특정 Maven 아티팩트를 어떻게 다운로드 할 수 있습니까? (0) | 2020.06.14 |
Dijkstra의 알고리즘과 A- 스타는 어떻게 비교됩니까? (0) | 2020.06.14 |
자바 기본 생성자 (0) | 2020.06.14 |