The
arg
argument must be a tuple object containing an argument list passed from Python to a
C function. The
format
argument must be a format string, whose syntax is explained below.
The remaining arguments must be addresses of variables whose type is determined by the
format string. For the conversion to succeed, the
arg
object must match the format and the
format must be exhausted.
Note that while
PyArg_ParseTuple()
checks that the Python arguments have the required
types, it cannot check the validity of the addresses of C variables passed to the call: if you
make mistakes there, your code will probably crash or at least overwrite random bits in
memory. So be careful!
A format string consists of zero or more ``format units''. A format unit describes one Python
object; it is usually a single character or a parenthesized sequence of format units. With a few
exceptions, a format unit that is not a parenthesized sequence normally corresponds to a
single address argument to
PyArg_ParseTuple()
. In the following description, the quoted
form is the format unit; the entry in (round) parentheses is the Python object type that
matches the format unit; and the entry in [square] brackets is the type of the C variable(s)
whose address should be passed. (Use the "
&
"operator to pass a variable's address.)
Note that any Python object references which are provided to the caller are
borrowed
references; do not decrement their reference count!
"
s
" (string or Unicode object) [char *]
Convert a Python string or Unicode object to a C pointer to a character string. You
must not provide storage for the string itself; a pointer to an existing string is stored
into the character pointer variable whose address you pass. The C string is
null-terminated. The Python string must not contain embedded null bytes; if it does, a
TypeError
exception is raised. Unicode objects are converted to C strings using the
default encoding. If this conversion fails, an
UnicodeError
is raised.
"
s#
" (string, Unicode or any read buffer compatible object) [char *, int]
This variant on "
s
" stores into two C variables, the first one a pointer to a character
string, the second one its length. In this case the Python string may contain embedded
null bytes. Unicode objects pass back a pointer to the default encoded string version
of the object if such a conversion is possible. All other read buffer compatible objects
pass back a reference to the raw internal data representation.
"
z
" (string or
None
) [char *]
Like "
s
", but the Python object may also be
None
, in which case the C pointer is set to
NULL
.
"
z#
" (string or
None
or any read buffer compatible object) [char *, int]
This is to "
s#
" as "
z
" is to "
s
".
"
u
" (Unicode object) [Py_UNICODE *]
Convert a Python Unicode object to a C pointer to a null-terminated buffer of 16-bit
Unicode (UTF-16) data. As with "
s
", there is no need to provide storage for the