ctypes파이썬외부 함수 인터페이스(FFI) 라이브러리로, 파이썬 2.5부터 기본으로 포함되어 있다. 윈도우DLL과 같은 동적 라이브러리에 있는 함수를 직접 호출할 수 있으며, 다양한 C 자료형을 다루기 위한 인터페이스를 제공한다. 이를 사용해 순수 파이썬 코드만으로 확장 모듈을 구현할 수도 있다.

예제

편집

다음은 윈도 환경에서 msvcrt.dll의 printf 함수를 호출하는 예이다. 이미 존재하는 함수의 원형을 파이썬 환경에 적절하도록 고치는 예를 볼 수 있다.

>>> from ctypes import *
>>> printf = cdll.msvcrt.printf
>>> printf("hello world\n")
hello world
12
>>> printf.restype = None
>>> printf("hello world\n")
hello world

ctypes는 별도로 함수 원형을 지정하지 않아도 내부적으로 스택을 조사하여 함수의 원형을 확인하려 시도하며, 윈도 같은 환경에서는 세그먼트 위반 같은 치명적인 오류를 예외로 처리해 준다.

>>> cdll.msvcrt.strlen(None)
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
WindowsError: exception: access violation reading 0x00000000

외부 링크

편집