扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
findAt函数可以使用可变参数*args,即findAt(*args)。同样还是将几十个坐标放到a列表中,然后直接调用findAt(*a)
创新互联主要从事网站建设、做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务江岸,10多年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220
题主,你基本操作没什么问题,有几个小地方要修改一下,修改如下:
你的源码:
PyObject* list = PyList_New(3);
for (size_t i = 0; i 3; i++)
PyList_Append(list, Py_BuildValue("i", i));
PyEval_CallObject(pFunc, list);
--------------------------------------------------------------------------------------
修改后,应该是这样
PyObject* pArgs = NULL;
PyObject* list = PyList_New(0); //3改成0
pArgs = PyTuple_New(1); //定义1个参数
for (size_t i = 0; i 3; i++)
PyList_Append(list, Py_BuildValue("i", i)); //这样才能用Append,
PyTuple_SetItem(pArgs, 0, list); //将列表赋给参数
PyEval_CallObject(pFunc, list); //传入参数,调用函数
注意事项:PyList_New(0) 初始化0的时候,应该用Append初始化
PyList_New(3) 初始化3个时候,应该用SetItem初始化
如果用Append的话,会出现[NULL, NULL, NULL]的情况
我在给一个完整的:
Python :(hello.py)
def TestList(nlist):
print(nlist)
return
一般参数都是已元组形式传入的
Py_Initialize();
PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append('./')");
PyObject* pModule =NULL;
PyObject* pList = NULL;
PyObject* pFunc = NULL;
PyObject* pArgs = NULL;
pModule = PyImport_ImportModule("hello");
pFunc = PyObject_GetAttrString(pModule, "TestList");
pArgs = PyTuple_New(1);
pList = PyList_New(0);
for (int i = 0; i 3; i++)
{
PyList_Append(pList, Py_BuildValue("i", i));
}
PyTuple_SetItem(pArgs, 0, pList);
pRet = PyEval_CallObject(pFunc, pArgs);
Py_Finalize();
最后输出的:[0, 1, 2]
void fun(a,10) 将数组a的首地址赋给指针s
{
int i; i 计的是这数组中有几个字母
for (;*s;s++) 每循环一次,s后移一位,判断结束循环的条件s指向的内容为" \0 "
{
if(*s='a'*s='z'||*s='A'*s='Z')
i++;
}
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流