C에서는 많은 입력을 필요로하는 함수를 보는 것이 드문 일이 아니며 많은 옵션은 구조체에서 이들을 그룹화하여 인터페이스를보다 명확하게 만듭니다. 개발자. (비록 당신이 컴파일러에 의존 할 수 있어야한다. at least 127 arguments to a function 아무도 실제로 많은 것을 쓰려고한다. 특히 C는 오버로딩이나 기본 함수 인자 지원이 없다.kwargs를 사용하여 선택적 인수의 구조체를 사용하는 함수 줄 바꾸기
#include <stdbool.h>
typedef struct {
const char *name;
void *stuff;
int max_size;
char flags;
_Bool swizzle;
double frobination;
//...
} ComplexArgs;
void ComplexFun(const ComplexArgs *arg) {}
그것을 사용하여 신속하게 작업을 우리가 뭔가를 얻을 수 있습니다 사용하여이 꿀꺽 꿀꺽 포장에 관해서 : 가상의 예를 들어 우리는 문제를 설명하기 위해 다음과 같은 구조체/기능 쌍 (test.h)을 고려할 수
%module test
%{
#include "test.h"
%}
typedef bool _Bool;
%include "test.h"
import test
args=test.ComplexArgs()
args.flags=100;
args.swizzle=True
test.ComplexFun(args)
을하지만 그건 정확히 파이썬되지 않습니다 : 작동하고 다음과 같이 우리가 그것을 사용할 수 있습니다
.
import test
# Not legal in the interface currently:
test.ComplexFun(flags=100, swizzle=True)
우리가 어떻게 그 일을 할 수 있습니다 : 파이썬 개발자는 호출의 종류를 지원하는 데 사용 kwargs로보고 더 익숙한 것입니까? SWIG -keyword 명령 행 옵션은 함수에 실제 인수가 하나만 있기 때문에 도움이되지 않습니다.