Python/C API에는 일반적으로 일반적으로 사용되는 상황과 특정 상황에 대해 더 효율적이거나 편리하게 비슷한 작업을 수행하는 많은 관련 기능이 있습니다.PyInt_FromLong과 Py_BuildValue의 차이점
예를 들어, PyDict_SetItem
과 PyDict_SetItemString
은 동일하지만 후자는 C 문자열을 키로 특수화합니다. PyList_SetItem
및 PyList_SET_ITEM
의 경우 두 번째는 오류 검사를하지 않으며 기존 항목 (explained here)을 지정하지 않습니다.
항상 Py_BuildValue
일 때 PyInt_FromLong
과 같은 특별한 전환을 발생시키는 이유는 무엇입니까? 둘 다 파이썬 객체에 대한 새로운 참조를 반환하고 똑같은 일을하는 것처럼 보입니다. 이 같은 질문은 PyInt_FromSsize_t
, PyTuple_Pack
등과 같은 함수에 적용됩니다 (모두 적절한과 적절한 형식 문자열을 사용).
언제 다른 하나를 사용해야합니까?
[facade 패턴] (http://en.wikipedia.org/wiki/Facade_pattern)의 결과로'Py_BuildValue'를 볼 수 있습니다. 저수준 호출을 많이 포함하는 상위 수준 호출입니다. 필수는 아니지만 유용합니다. 분명히 저수준 API없이 하나의 함수'Py_BuildValue'를 사용하면 유지 보수 할 수백 줄 이상의 괴물로 끝날 것입니다. 그래서 다른 방법으로해야합니다 : 저수준 변환 API와 훨씬 더 짧고 유지 보수가 용이 한 하이 레벨 액세스를위한 파사드 기능. – Bakuriu