2017-12-04 1 views
0

파이썬은 분리 값으로 쉼표를 사용하여 둘 이상의 결과를 반환 할 수 있습니다.C 확장에서 둘 이상의 출력을 반환 하시겠습니까?

C 언어로 작성된 CPython 확장을 개발할 때 동일한 결과를 얻을 수 있습니까? 방법?

성능에 대한 몇 가지 테스트를 수행하기 위해 기존 Python 코드를 대체하는 CPython 확장을 개발 중이며 동일한 인터페이스를 사용하여 기존 코드 기반을 변경하지 않는 것을 선호합니다.

저는 파이썬 3.6을 사용하고 있습니다.

+1

여러 값을 구분하면 python은 실제로 제공된 값이 포함 된 단일 값 (즉, 튜플)을 반환합니다. 따라서 Tuple 데이터 유형을 처리해야합니다. – Basic

답변

4

예, 튜플을 PyTuple_New으로 만들고 채우고 반환 할 수 있습니다. 피 호출자는 평상시처럼 결과를 언팩 할 수 있습니다.

파이썬은 컨테이너를 사용하여 여러 값을 반환합니다. 압축을 푼 단일 객체가 반환됩니다. 쉼표로 구분 된 튜플을 의미합니다. 반면에 대괄호 안에는 목록이 만들어집니다. 이에 대한 자세한 내용은 How does Python return multiple values from a function을 참조하십시오.

C에서 어떻게 수행 할 것인지 예를 들어 보려면 the implementation of str.partition 또는 array.buffer_info (또는 기본 제공 메소드를 반환하는 튜플)을 살펴보세요.

관련 문제