문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 Python (문단 편집) === 외부 함수 인터페이스(FFI) === Python에서 C언어와 같은 다른 언어로 작성된 함수를 호출할 수 있도록 한다. 영어로는 FFI(Foreign function interface)다. 하는 일은 CPython의 확장 모듈과 비슷하지만 완전히 다른 개념으로 몇 가지의 차이점들이 존재한다. * 확장 모듈은 Python의 API와 자료형을 사용하고 FFI는 C의 자료형을 사용한다. 예를 들어 list의 모든 요소를 더하는 함수를 작성한 다면 확장 모듈 에서는 list 객체를 그대로 C로 보내어 CPython의 타입(PyListObject*)과 CPython API의 함수(PyList_GetItem)을 통해 list의 요소에 접근한다면 FFI에서는 Python에서 C배열을 할당하여 데이터를 복사한 후 C로 포인터를 전달한다. * 확장 모듈은 별도의 컴파일이 필요하고 FFI는 C 라이브러리를 날것 그대로 사용할 수 있다. * 확장 모듈은 Python 구현체에 독립적이고 FFI 코드는 다른 구현체(PyPy)에서도 사용할 수 있다. FFI를 이용하여 C함수를 그대로 노출하는 것은 프로그램을 매우 난잡하게 만들 수 있으므로 C타입으로 형변환을 수행하는 Wrapper function이나 C의 포인터를 가지고 있는 Wrapper class를 작성하여 Pythonic한 코드를 작성하는 것이 중요하다. 아래는 FFI 라이브러리이다. * [[https://docs.python.org/ko/3/library/ctypes.html|ctypes]]: Python 내장 모듈이다. * [[https://cffi.readthedocs.io/en/latest/|cffi]]: Python 파일 안에 C 선언 그대로 을 사용하는 혁명적인 방식을 제공하는 라이브러리이다. [* 단지 헤더파일을 복붙하는 것으로 작동한다.] * PyO3: Rust용 FFI이다.저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기