10
The Application Programmer's Interface to Python gives C and C++ programmers
11
access to the Python interpreter at a variety of levels. The API is equally
12
usable from C++, but for brevity it is generally referred to as the Python/C
13
API. There are two fundamentally different reasons for using the Python/C API.
14
The first reason is to write *extension modules* for specific purposes; these
15
are C modules that extend the Python interpreter. This is probably the most
16
common use. The second reason is to use Python as a component in a larger
17
application; this technique is generally referred to as :dfn:`embedding` Python
20
Writing an extension module is a relatively well-understood process, where a
21
"cookbook" approach works well. There are several tools that automate the
22
process to some extent. While people have embedded Python in other
23
applications since its early existence, the process of embedding Python is less
24
straightforward than writing an extension.
26
Many API functions are useful independent of whether you're embedding or
27
extending Python; moreover, most applications that embed Python will need to
28
provide a custom extension as well, so it's probably a good idea to become
29
familiar with writing an extension before attempting to embed Python in a real
38
All function, type and macro definitions needed to use the Python/C API are
39
included in your code by the following line::
43
This implies inclusion of the following standard headers: ``<stdio.h>``,
44
``<string.h>``, ``<errno.h>``, ``<limits.h>``, ``<assert.h>`` and ``<stdlib.h>``
49
Since Python may define some pre-processor definitions which affect the standard
50
headers on some systems, you *must* include :file:`Python.h` before any standard
53
All user visible names defined by Python.h (except those defined by the included
54
standard headers) have one of the prefixes ``Py`` or ``_Py``. Names beginning
55
with ``_Py`` are for internal use by the Python implementation and should not be
56
used by extension writers. Structure member names do not have a reserved prefix.
58
**Important:** user code should never define names that begin with ``Py`` or
59
``_Py``. This confuses the reader, and jeopardizes the portability of the user
60
code to future Python versions, which may define additional names beginning with
61
one of these prefixes.
63
The header files are typically installed with Python. On Unix, these are
64
located in the directories :file:`{prefix}/include/pythonversion/` and
65
:file:`{exec_prefix}/include/pythonversion/`, where :envvar:`prefix` and
66
:envvar:`exec_prefix` are defined by the corresponding parameters to Python's
67
:program:`configure` script and *version* is ``sys.version[:3]``. On Windows,
68
the headers are installed in :file:`{prefix}/include`, where :envvar:`prefix` is
69
the installation directory specified to the installer.
71
To include the headers, place both directories (if different) on your compiler's
72
search path for includes. Do *not* place the parent directories on the search
73
path and then use ``#include <pythonX.Y/Python.h>``; this will break on
74
multi-platform builds since the platform independent headers under
75
:envvar:`prefix` include the platform specific headers from
76
:envvar:`exec_prefix`.
78
C++ users should note that though the API is defined entirely using C, the
79
header files do properly declare the entry points to be ``extern "C"``, so there
80
is no need to do anything special to use the API from C++.
85
Objects, Types and Reference Counts
86
===================================
88
.. index:: object: type
90
Most Python/C API functions have one or more arguments as well as a return value
91
of type :c:type:`PyObject\*`. This type is a pointer to an opaque data type
92
representing an arbitrary Python object. Since all Python object types are
93
treated the same way by the Python language in most situations (e.g.,
94
assignments, scope rules, and argument passing), it is only fitting that they
95
should be represented by a single C type. Almost all Python objects live on the
96
heap: you never declare an automatic or static variable of type
97
:c:type:`PyObject`, only pointer variables of type :c:type:`PyObject\*` can be
98
declared. The sole exception are the type objects; since these must never be
99
deallocated, they are typically static :c:type:`PyTypeObject` objects.
101
All Python objects (even Python integers) have a :dfn:`type` and a
102
:dfn:`reference count`. An object's type determines what kind of object it is
103
(e.g., an integer, a list, or a user-defined function; there are many more as
104
explained in :ref:`types`). For each of the well-known types there is a macro
105
to check whether an object is of that type; for instance, ``PyList_Check(a)`` is
106
true if (and only if) the object pointed to by *a* is a Python list.
114
The reference count is important because today's computers have a finite (and
115
often severely limited) memory size; it counts how many different places there
116
are that have a reference to an object. Such a place could be another object,
117
or a global (or static) C variable, or a local variable in some C function.
118
When an object's reference count becomes zero, the object is deallocated. If
119
it contains references to other objects, their reference count is decremented.
120
Those other objects may be deallocated in turn, if this decrement makes their
121
reference count become zero, and so on. (There's an obvious problem with
122
objects that reference each other here; for now, the solution is "don't do
129
Reference counts are always manipulated explicitly. The normal way is to use
130
the macro :c:func:`Py_INCREF` to increment an object's reference count by one,
131
and :c:func:`Py_DECREF` to decrement it by one. The :c:func:`Py_DECREF` macro
132
is considerably more complex than the incref one, since it must check whether
133
the reference count becomes zero and then cause the object's deallocator to be
134
called. The deallocator is a function pointer contained in the object's type
135
structure. The type-specific deallocator takes care of decrementing the
136
reference counts for other objects contained in the object if this is a compound
137
object type, such as a list, as well as performing any additional finalization
138
that's needed. There's no chance that the reference count can overflow; at
139
least as many bits are used to hold the reference count as there are distinct
140
memory locations in virtual memory (assuming ``sizeof(Py_ssize_t) >= sizeof(void*)``).
141
Thus, the reference count increment is a simple operation.
143
It is not necessary to increment an object's reference count for every local
144
variable that contains a pointer to an object. In theory, the object's
145
reference count goes up by one when the variable is made to point to it and it
146
goes down by one when the variable goes out of scope. However, these two
147
cancel each other out, so at the end the reference count hasn't changed. The
148
only real reason to use the reference count is to prevent the object from being
149
deallocated as long as our variable is pointing to it. If we know that there
150
is at least one other reference to the object that lives at least as long as
151
our variable, there is no need to increment the reference count temporarily.
152
An important situation where this arises is in objects that are passed as
153
arguments to C functions in an extension module that are called from Python;
154
the call mechanism guarantees to hold a reference to every argument for the
155
duration of the call.
157
However, a common pitfall is to extract an object from a list and hold on to it
158
for a while without incrementing its reference count. Some other operation might
159
conceivably remove the object from the list, decrementing its reference count
160
and possible deallocating it. The real danger is that innocent-looking
161
operations may invoke arbitrary Python code which could do this; there is a code
162
path which allows control to flow back to the user from a :c:func:`Py_DECREF`, so
163
almost any operation is potentially dangerous.
165
A safe approach is to always use the generic operations (functions whose name
166
begins with ``PyObject_``, ``PyNumber_``, ``PySequence_`` or ``PyMapping_``).
167
These operations always increment the reference count of the object they return.
168
This leaves the caller with the responsibility to call :c:func:`Py_DECREF` when
169
they are done with the result; this soon becomes second nature.
172
.. _api-refcountdetails:
174
Reference Count Details
175
^^^^^^^^^^^^^^^^^^^^^^^
177
The reference count behavior of functions in the Python/C API is best explained
178
in terms of *ownership of references*. Ownership pertains to references, never
179
to objects (objects are not owned: they are always shared). "Owning a
180
reference" means being responsible for calling Py_DECREF on it when the
181
reference is no longer needed. Ownership can also be transferred, meaning that
182
the code that receives ownership of the reference then becomes responsible for
183
eventually decref'ing it by calling :c:func:`Py_DECREF` or :c:func:`Py_XDECREF`
184
when it's no longer needed---or passing on this responsibility (usually to its
185
caller). When a function passes ownership of a reference on to its caller, the
186
caller is said to receive a *new* reference. When no ownership is transferred,
187
the caller is said to *borrow* the reference. Nothing needs to be done for a
190
Conversely, when a calling function passes in a reference to an object, there
191
are two possibilities: the function *steals* a reference to the object, or it
192
does not. *Stealing a reference* means that when you pass a reference to a
193
function, that function assumes that it now owns that reference, and you are not
194
responsible for it any longer.
197
single: PyList_SetItem()
198
single: PyTuple_SetItem()
200
Few functions steal references; the two notable exceptions are
201
:c:func:`PyList_SetItem` and :c:func:`PyTuple_SetItem`, which steal a reference
202
to the item (but not to the tuple or list into which the item is put!). These
203
functions were designed to steal a reference because of a common idiom for
204
populating a tuple or list with newly created objects; for example, the code to
205
create the tuple ``(1, 2, "three")`` could look like this (forgetting about
206
error handling for the moment; a better way to code this is shown below)::
211
PyTuple_SetItem(t, 0, PyLong_FromLong(1L));
212
PyTuple_SetItem(t, 1, PyLong_FromLong(2L));
213
PyTuple_SetItem(t, 2, PyUnicode_FromString("three"));
215
Here, :c:func:`PyLong_FromLong` returns a new reference which is immediately
216
stolen by :c:func:`PyTuple_SetItem`. When you want to keep using an object
217
although the reference to it will be stolen, use :c:func:`Py_INCREF` to grab
218
another reference before calling the reference-stealing function.
220
Incidentally, :c:func:`PyTuple_SetItem` is the *only* way to set tuple items;
221
:c:func:`PySequence_SetItem` and :c:func:`PyObject_SetItem` refuse to do this
222
since tuples are an immutable data type. You should only use
223
:c:func:`PyTuple_SetItem` for tuples that you are creating yourself.
225
Equivalent code for populating a list can be written using :c:func:`PyList_New`
226
and :c:func:`PyList_SetItem`.
228
However, in practice, you will rarely use these ways of creating and populating
229
a tuple or list. There's a generic function, :c:func:`Py_BuildValue`, that can
230
create most common objects from C values, directed by a :dfn:`format string`.
231
For example, the above two blocks of code could be replaced by the following
232
(which also takes care of the error checking)::
234
PyObject *tuple, *list;
236
tuple = Py_BuildValue("(iis)", 1, 2, "three");
237
list = Py_BuildValue("[iis]", 1, 2, "three");
239
It is much more common to use :c:func:`PyObject_SetItem` and friends with items
240
whose references you are only borrowing, like arguments that were passed in to
241
the function you are writing. In that case, their behaviour regarding reference
242
counts is much saner, since you don't have to increment a reference count so you
243
can give a reference away ("have it be stolen"). For example, this function
244
sets all items of a list (actually, any mutable sequence) to a given item::
247
set_all(PyObject *target, PyObject *item)
251
n = PyObject_Length(target);
254
for (i = 0; i < n; i++) {
255
PyObject *index = PyLong_FromSsize_t(i);
258
if (PyObject_SetItem(target, index, item) < 0) {
267
.. index:: single: set_all()
269
The situation is slightly different for function return values. While passing
270
a reference to most functions does not change your ownership responsibilities
271
for that reference, many functions that return a reference to an object give
272
you ownership of the reference. The reason is simple: in many cases, the
273
returned object is created on the fly, and the reference you get is the only
274
reference to the object. Therefore, the generic functions that return object
275
references, like :c:func:`PyObject_GetItem` and :c:func:`PySequence_GetItem`,
276
always return a new reference (the caller becomes the owner of the reference).
278
It is important to realize that whether you own a reference returned by a
279
function depends on which function you call only --- *the plumage* (the type of
280
the object passed as an argument to the function) *doesn't enter into it!*
281
Thus, if you extract an item from a list using :c:func:`PyList_GetItem`, you
282
don't own the reference --- but if you obtain the same item from the same list
283
using :c:func:`PySequence_GetItem` (which happens to take exactly the same
284
arguments), you do own a reference to the returned object.
287
single: PyList_GetItem()
288
single: PySequence_GetItem()
290
Here is an example of how you could write a function that computes the sum of
291
the items in a list of integers; once using :c:func:`PyList_GetItem`, and once
292
using :c:func:`PySequence_GetItem`. ::
295
sum_list(PyObject *list)
298
long total = 0, value;
301
n = PyList_Size(list);
303
return -1; /* Not a list */
304
for (i = 0; i < n; i++) {
305
item = PyList_GetItem(list, i); /* Can't fail */
306
if (!PyLong_Check(item)) continue; /* Skip non-integers */
307
value = PyLong_AsLong(item);
308
if (value == -1 && PyErr_Occurred())
309
/* Integer too big to fit in a C long, bail out */
316
.. index:: single: sum_list()
321
sum_sequence(PyObject *sequence)
324
long total = 0, value;
326
n = PySequence_Length(sequence);
328
return -1; /* Has no length */
329
for (i = 0; i < n; i++) {
330
item = PySequence_GetItem(sequence, i);
332
return -1; /* Not a sequence, or other failure */
333
if (PyLong_Check(item)) {
334
value = PyLong_AsLong(item);
336
if (value == -1 && PyErr_Occurred())
337
/* Integer too big to fit in a C long, bail out */
342
Py_DECREF(item); /* Discard reference ownership */
348
.. index:: single: sum_sequence()
356
There are few other data types that play a significant role in the Python/C
357
API; most are simple C types such as :c:type:`int`, :c:type:`long`,
358
:c:type:`double` and :c:type:`char\*`. A few structure types are used to
359
describe static tables used to list the functions exported by a module or the
360
data attributes of a new object type, and another is used to describe the value
361
of a complex number. These will be discussed together with the functions that
370
The Python programmer only needs to deal with exceptions if specific error
371
handling is required; unhandled exceptions are automatically propagated to the
372
caller, then to the caller's caller, and so on, until they reach the top-level
373
interpreter, where they are reported to the user accompanied by a stack
376
.. index:: single: PyErr_Occurred()
378
For C programmers, however, error checking always has to be explicit. All
379
functions in the Python/C API can raise exceptions, unless an explicit claim is
380
made otherwise in a function's documentation. In general, when a function
381
encounters an error, it sets an exception, discards any object references that
382
it owns, and returns an error indicator. If not documented otherwise, this
383
indicator is either *NULL* or ``-1``, depending on the function's return type.
384
A few functions return a Boolean true/false result, with false indicating an
385
error. Very few functions return no explicit error indicator or have an
386
ambiguous return value, and require explicit testing for errors with
387
:c:func:`PyErr_Occurred`. These exceptions are always explicitly documented.
390
single: PyErr_SetString()
391
single: PyErr_Clear()
393
Exception state is maintained in per-thread storage (this is equivalent to
394
using global storage in an unthreaded application). A thread can be in one of
395
two states: an exception has occurred, or not. The function
396
:c:func:`PyErr_Occurred` can be used to check for this: it returns a borrowed
397
reference to the exception type object when an exception has occurred, and
398
*NULL* otherwise. There are a number of functions to set the exception state:
399
:c:func:`PyErr_SetString` is the most common (though not the most general)
400
function to set the exception state, and :c:func:`PyErr_Clear` clears the
403
The full exception state consists of three objects (all of which can be
404
*NULL*): the exception type, the corresponding exception value, and the
405
traceback. These have the same meanings as the Python result of
406
``sys.exc_info()``; however, they are not the same: the Python objects represent
407
the last exception being handled by a Python :keyword:`try` ...
408
:keyword:`except` statement, while the C level exception state only exists while
409
an exception is being passed on between C functions until it reaches the Python
410
bytecode interpreter's main loop, which takes care of transferring it to
411
``sys.exc_info()`` and friends.
413
.. index:: single: exc_info() (in module sys)
415
Note that starting with Python 1.5, the preferred, thread-safe way to access the
416
exception state from Python code is to call the function :func:`sys.exc_info`,
417
which returns the per-thread exception state for Python code. Also, the
418
semantics of both ways to access the exception state have changed so that a
419
function which catches an exception will save and restore its thread's exception
420
state so as to preserve the exception state of its caller. This prevents common
421
bugs in exception handling code caused by an innocent-looking function
422
overwriting the exception being handled; it also reduces the often unwanted
423
lifetime extension for objects that are referenced by the stack frames in the
426
As a general principle, a function that calls another function to perform some
427
task should check whether the called function raised an exception, and if so,
428
pass the exception state on to its caller. It should discard any object
429
references that it owns, and return an error indicator, but it should *not* set
430
another exception --- that would overwrite the exception that was just raised,
431
and lose important information about the exact cause of the error.
433
.. index:: single: sum_sequence()
435
A simple example of detecting exceptions and passing them on is shown in the
436
:c:func:`sum_sequence` example above. It so happens that this example doesn't
437
need to clean up any owned references when it detects an error. The following
438
example function shows some error cleanup. First, to remind you why you like
439
Python, we show the equivalent Python code::
441
def incr_item(dict, key):
448
.. index:: single: incr_item()
450
Here is the corresponding C code, in all its glory::
453
incr_item(PyObject *dict, PyObject *key)
455
/* Objects all initialized to NULL for Py_XDECREF */
456
PyObject *item = NULL, *const_one = NULL, *incremented_item = NULL;
457
int rv = -1; /* Return value initialized to -1 (failure) */
459
item = PyObject_GetItem(dict, key);
461
/* Handle KeyError only: */
462
if (!PyErr_ExceptionMatches(PyExc_KeyError))
465
/* Clear the error and use zero: */
467
item = PyLong_FromLong(0L);
471
const_one = PyLong_FromLong(1L);
472
if (const_one == NULL)
475
incremented_item = PyNumber_Add(item, const_one);
476
if (incremented_item == NULL)
479
if (PyObject_SetItem(dict, key, incremented_item) < 0)
481
rv = 0; /* Success */
482
/* Continue with cleanup code */
485
/* Cleanup code, shared by success and failure path */
487
/* Use Py_XDECREF() to ignore NULL references */
489
Py_XDECREF(const_one);
490
Py_XDECREF(incremented_item);
492
return rv; /* -1 for error, 0 for success */
495
.. index:: single: incr_item()
498
single: PyErr_ExceptionMatches()
499
single: PyErr_Clear()
502
This example represents an endorsed use of the ``goto`` statement in C!
503
It illustrates the use of :c:func:`PyErr_ExceptionMatches` and
504
:c:func:`PyErr_Clear` to handle specific exceptions, and the use of
505
:c:func:`Py_XDECREF` to dispose of owned references that may be *NULL* (note the
506
``'X'`` in the name; :c:func:`Py_DECREF` would crash when confronted with a
507
*NULL* reference). It is important that the variables used to hold owned
508
references are initialized to *NULL* for this to work; likewise, the proposed
509
return value is initialized to ``-1`` (failure) and only set to success after
510
the final call made is successful.
518
The one important task that only embedders (as opposed to extension writers) of
519
the Python interpreter have to worry about is the initialization, and possibly
520
the finalization, of the Python interpreter. Most functionality of the
521
interpreter can only be used after the interpreter has been initialized.
524
single: Py_Initialize()
528
triple: module; search; path
529
single: path (in module sys)
531
The basic initialization function is :c:func:`Py_Initialize`. This initializes
532
the table of loaded modules, and creates the fundamental modules
533
:mod:`builtins`, :mod:`__main__`, and :mod:`sys`. It also
534
initializes the module search path (``sys.path``).
536
.. index:: single: PySys_SetArgvEx()
538
:c:func:`Py_Initialize` does not set the "script argument list" (``sys.argv``).
539
If this variable is needed by Python code that will be executed later, it must
540
be set explicitly with a call to ``PySys_SetArgvEx(argc, argv, updatepath)``
541
after the call to :c:func:`Py_Initialize`.
543
On most systems (in particular, on Unix and Windows, although the details are
544
slightly different), :c:func:`Py_Initialize` calculates the module search path
545
based upon its best guess for the location of the standard Python interpreter
546
executable, assuming that the Python library is found in a fixed location
547
relative to the Python interpreter executable. In particular, it looks for a
548
directory named :file:`lib/python{X.Y}` relative to the parent directory
549
where the executable named :file:`python` is found on the shell command search
550
path (the environment variable :envvar:`PATH`).
552
For instance, if the Python executable is found in
553
:file:`/usr/local/bin/python`, it will assume that the libraries are in
554
:file:`/usr/local/lib/python{X.Y}`. (In fact, this particular path is also
555
the "fallback" location, used when no executable file named :file:`python` is
556
found along :envvar:`PATH`.) The user can override this behavior by setting the
557
environment variable :envvar:`PYTHONHOME`, or insert additional directories in
558
front of the standard path by setting :envvar:`PYTHONPATH`.
561
single: Py_SetProgramName()
563
single: Py_GetPrefix()
564
single: Py_GetExecPrefix()
565
single: Py_GetProgramFullPath()
567
The embedding application can steer the search by calling
568
``Py_SetProgramName(file)`` *before* calling :c:func:`Py_Initialize`. Note that
569
:envvar:`PYTHONHOME` still overrides this and :envvar:`PYTHONPATH` is still
570
inserted in front of the standard path. An application that requires total
571
control has to provide its own implementation of :c:func:`Py_GetPath`,
572
:c:func:`Py_GetPrefix`, :c:func:`Py_GetExecPrefix`, and
573
:c:func:`Py_GetProgramFullPath` (all defined in :file:`Modules/getpath.c`).
575
.. index:: single: Py_IsInitialized()
577
Sometimes, it is desirable to "uninitialize" Python. For instance, the
578
application may want to start over (make another call to
579
:c:func:`Py_Initialize`) or the application is simply done with its use of
580
Python and wants to free memory allocated by Python. This can be accomplished
581
by calling :c:func:`Py_Finalize`. The function :c:func:`Py_IsInitialized` returns
582
true if Python is currently in the initialized state. More information about
583
these functions is given in a later chapter. Notice that :c:func:`Py_Finalize`
584
does *not* free all memory allocated by the Python interpreter, e.g. memory
585
allocated by extension modules currently cannot be released.
593
Python can be built with several macros to enable extra checks of the
594
interpreter and extension modules. These checks tend to add a large amount of
595
overhead to the runtime so they are not enabled by default.
597
A full list of the various types of debugging builds is in the file
598
:file:`Misc/SpecialBuilds.txt` in the Python source distribution. Builds are
599
available that support tracing of reference counts, debugging the memory
600
allocator, or low-level profiling of the main interpreter loop. Only the most
601
frequently-used builds will be described in the remainder of this section.
603
Compiling the interpreter with the :c:macro:`Py_DEBUG` macro defined produces
604
what is generally meant by "a debug build" of Python. :c:macro:`Py_DEBUG` is
605
enabled in the Unix build by adding ``--with-pydebug`` to the
606
:file:`./configure` command. It is also implied by the presence of the
607
not-Python-specific :c:macro:`_DEBUG` macro. When :c:macro:`Py_DEBUG` is enabled
608
in the Unix build, compiler optimization is disabled.
610
In addition to the reference count debugging described below, the following
611
extra checks are performed:
613
* Extra checks are added to the object allocator.
615
* Extra checks are added to the parser and compiler.
617
* Downcasts from wide types to narrow types are checked for loss of information.
619
* A number of assertions are added to the dictionary and set implementations.
620
In addition, the set object acquires a :meth:`test_c_api` method.
622
* Sanity checks of the input arguments are added to frame creation.
624
* The storage for ints is initialized with a known invalid pattern to catch
625
reference to uninitialized digits.
627
* Low-level tracing and extra exception checking are added to the runtime
630
* Extra checks are added to the memory arena implementation.
632
* Extra debugging is added to the thread module.
634
There may be additional checks not mentioned here.
636
Defining :c:macro:`Py_TRACE_REFS` enables reference tracing. When defined, a
637
circular doubly linked list of active objects is maintained by adding two extra
638
fields to every :c:type:`PyObject`. Total allocations are tracked as well. Upon
639
exit, all existing references are printed. (In interactive mode this happens
640
after every statement run by the interpreter.) Implied by :c:macro:`Py_DEBUG`.
642
Please refer to :file:`Misc/SpecialBuilds.txt` in the Python source distribution
643
for more detailed information.