2017-05-23 1 views
0

키워드 인수가있는 (C 호출 가능) 메소드를 def 대신 cdef을 통해 정의 할 수 있습니까? 하나 데프을 CDEF 함수를 호출하는 **kwargs로 :Cython의 (C 호출 가능) cdef 메소드에서 선택적 (키워드) 인수 사용하기

cdef double function(x, **kwargs): 
    if "factor" in kwargs: 
     x = x * kwargs["factor"] 
    return x*2 

가 나는 두 부분으로 기능을 분리 할 수 ​​알고있다. 현재 파이썬과 Cython에 동일한 소스 코드를 추가하려고 시도 중입니다. 일부 추가 코드는 pyorcy입니다.

답변

1

No. cdef 함수는 C 스타일의 함수 시그니처를 생성하며 거기에 키워드 인수를 나타낼 실제 방법이 없습니다. 당신이 cdef 기능을 원하는 이유는 무엇

cdef double function(x, kwargs): 
    # the rest as before 

:

당신이 기능을 사용하면 효율적으로 키워드 인수를 취급 사전을 수용 할 수? def 함수는 Cython 내에서 정의 된 함수이며 여전히 컴파일 할 수 있습니다. cdef 함수를 사용할 수 있습니다. 따라서 함수를 만들 수있는 이유는 거의 없습니다. cdef.

+0

나는 그것이 더 빠를 것이라고 생각했다. 벤치 마크 테스트를 마친 후에는 그렇지 않다는 것을 알아 냈습니다. 어쨌든 고마워. – Daniel