참조 횟수
*********

이 섹션의 매크로는 파이썬 객체의 참조 횟수를 관리하는 데 사용됩니다.

void Py_INCREF(PyObject *o)

   객체 *o*에 대한 참조 횟수를 늘립니다. 객체는 "NULL" 일 수 없습니다;
   "NULL"이 아닌지 확실하지 않으면, "Py_XINCREF()"를 사용하십시오.

void Py_XINCREF(PyObject *o)

   객체 *o*에 대한 참조 횟수를 늘립니다. 객체는 "NULL" 일 수 있습니다,
   이때 매크로는 효과가 없습니다.

void Py_DECREF(PyObject *o)

   객체 *o*에 대한 참조 횟수를 감소시킵니다. 객체는 "NULL" 일 수 없습
   니다; "NULL"이 아닌지 확실하지 않으면, "Py_XDECREF()"를 사용하십시
   오. 참조 횟수가 0이 되면, 객체 형의 할당 해제 함수 (반드시 "NULL"이
   아니어야 합니다)가 호출됩니다.

   경고:

     할당 해제 함수는 임의의 파이썬 코드가 호출되도록 할 수 있습니다 (
     예를 들어, "__del__()" 메서드가 있는 클래스 인스턴스가 할당 해제
     될 때). 이러한 코드에서의 예외는 전파되지 않지만, 실행된 코드는
     모든 파이썬 전역 변수에 자유롭게 액세스할 수 있습니다. 이것은
     "Py_DECREF()"가 호출되기 전에 전역 변수에서 도달할 수 있는 모든
     객체가 일관성 있는 상태에 있어야 함을 뜻합니다. 예를 들어, 리스트
     에서 객체를 삭제하는 코드는 삭제된 객체에 대한 참조를 임시 변수에
     복사하고, 리스트 데이터 구조를 갱신한 다음, 임시 변수에 대해
     "Py_DECREF()"를 호출해야 합니다.

void Py_XDECREF(PyObject *o)

   객체 *o*에 대한 참조 횟수를 감소시킵니다. 객체는 "NULL" 일 수 있습
   니다, 이때 매크로는 효과가 없습니다; 그렇지 않으면 효과는
   "Py_DECREF()"와 같으며 같은 경고가 적용됩니다.

void Py_CLEAR(PyObject *o)

   객체 *o*에 대한 참조 횟수를 감소시킵니다. 객체는 "NULL" 일 수 있습
   니다, 이때 매크로는 효과가 없습니다; 그렇지 않으면 인자도 "NULL"로
   설정된다는 점을 제외하고는, 효과가 "Py_DECREF()"와 같습니다. 매크로
   가 임시 변수를 신중하게 사용하고, 참조 횟수를 줄이기 전에 인자를
   "NULL"로 설정하기 때문에, "Py_DECREF()"에 대한 경고는 전달된 객체와
   관련하여 적용되지 않습니다.

   가비지 수집 중에 탐색 될 수 있는 객체의 참조 횟수를 감소시킬 때마다
   이 매크로를 사용하는 것이 좋습니다.

다음 함수는 파이썬의 실행 시간 동적 내장을 위한 것입니다:
"Py_IncRef(PyObject *o)", "Py_DecRef(PyObject *o)". 이것들은 단순히
"Py_XINCREF()"와 "Py_XDECREF()"의 노출된 함수 버전입니다.

다음 함수나 매크로는 인터프리터 코어에서만 사용할 수 있습니다:
"_Py_Dealloc()", "_Py_ForgetReference()", "_Py_NewReference()" 및 전역
변수 "_Py_RefTotal".
