python嵌入的问题

python嵌入的问题

现在做个把python脚本嵌入在c中的小项目,想把在c中创建的一个list(当然是py类型的)传递给脚本,然后在脚本中对这个列表进行操作。我知道的是可以调用脚本的时候传递一个tuple,那么可以把list作为这个tuple的一个元素传给脚本,但这样的话,又由于tuple的元素不能更改。所以该怎么办呢?这个传递参数该怎么写?脚本中的形参又要怎么声明呢?
请各位帮忙赐教。
PyObject* PyList_New()不行么?
用PyObject* PyObject_CallFunction( PyObject *callable, char *format, ...)

你说的这个是把列表中的元素对应的传给.py的形参,但我是要把列表本身传给传给形参,并且要修改这个列表,所以#¥%……&×
好像可以改啊
int
main(int argc, char *argv[])
{
    PyObject *pName, *pModule,*pFunc;
    PyObject *pArgs, *pValue,*plist;


    Py_Initialize();
    pName = PyString_FromString(argv[1]);


    pModule = PyImport_Import(pName);
    Py_DECREF(pName);

    if (pModule != NULL) {
        pFunc = PyObject_GetAttrString(pModule, argv[2]);


        if (pFunc && PyCallable_Check(pFunc)) {

            pArgs = PyTuple_New(1);
            plist = PyList_New(0);
            PyTuple_SetItem(pArgs, 0, plist);
            pValue = PyObject_CallObject(pFunc, pArgs);
            
        }

    }
    Py_Finalize();
    return 0;
}

下面是py文件
def   tt(plist):
    a=plist
    a.append(25)   
    print plist
    a[0]=30
    print plist
调用后输出:
D:\msys\home\luffy>a tt tt
[25]
[30]

不知道你说的不能改是什么意思?
你可以将上
            presult=PyList_GET_ITEM(plist,0);
           printf("Result of call: %ld\n",PyInt_AsLong(presult));
就会发现plist列表确实被更改了。
谢谢你的热心。
按你说的做了,但还是出了些问题,我再调试调试