PyArg_Parse vs PyArg_ParseTuple

David Brady chalain42 at
Wed Oct 17 03:27:42 CEST 2001


I'm new to Python, and I've searched the archives for more info but can't 
seem to find the info I need.  I am having trouble using PyArg_ParseTuple(). 
  Here is the python code I'm embedding:

def NumberFunction(x):
	return x+1

As you see, it's not too complex.  :-)  This is just a proof of concept I'm 
working on to prove it can be done.

Here is the code I'm trying to embed it in.  Note: this is C++, does that 
make a difference in this case?

// TestEmbed.cpp
#include <stdio.h>
#include <Python.h>

void main(void)
	long val = 7;
	PyObject *pmod, *pfunc, *pargs, *pstr;

	printf( "Processing data: %ld\n", val );

	pmod = PyImport_ImportModule( "TestModule" );
	pfunc = PyObject_GetAttrString( pmod, "NumberFunction" );

	pargs = Py_BuildValue( "(l)", val );
	pstr = PyEval_CallObject( pfunc, pargs );

	// *** This code works ***
	PyArg_Parse( pstr, "l", &val );

	// *** This code does NOT work ***
	//PyArg_ParseTuple( pstr, "l", &val );

	printf( "Val returned was %d\n", val );

If I use the ParseTuple version, the code appears to run fine, but val is 
unchanged.  I've tried using "(l)" as the string but I'm grasping at straws 

I read in the documentatian that PyArg_Parse() is deprecated, so I would 
like to get this working correctly.

Thank you!

Oh, this is Python 2.1.1 on Windows 2000.  (Not ActivePython.)


Get your FREE download of MSN Explorer at

More information about the Python-list mailing list