python数组函数参数 python数组方法

python 调用 C++的DLL,函数参数是数组怎么处理?

给你一个例子看看,你就知道怎么做了

为清原等地区用户提供了全套网页设计制作服务,及清原网站建设行业解决方案。主营业务为网站建设、成都网站制作、清原网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

C++的接口

typedef struct

{

unsigned long DeviceType;

int Handle;

int NumberOfClients;

int SerialNumber;

int MaxAllowedClients;

}NeoDevice;

int _stdcall icsneoFindNeoDevices(unsigned long DeviceTypes,  NeoDevice *pNeoDevices, int *pNumberOfDevices);

Python调用的代码:

class NeoDevice(Structure):

_fields_ = [("DeviceType",c_ulong),

("Handle",c_int),

("NumberOfClients",c_int),

("SerialNumber",c_int),

("MaxAllowedClients",c_int)]

class cNeoVICan(CCanBase):

def __init__(self):

neoVi = windll.icsneo40

self.icsneoFindNeoDevices = neoVi.icsneoFindNeoDevices

if __name__ == "__main__":

canBus = cNeoVICan()

print canBus.icsneoGetDLLVersion()

iNumberOfDevices = (NeoDevice * 10)()

num = c_int()

iResult = canBus.icsneoFindNeoDevices(c_ulong(65535), cast(iNumberOfDevices, POINT(NeoDevice)), byref(num))

C++调用时python时,如何传入数组做为参数

题主,你基本操作没什么问题,有几个小地方要修改一下,修改如下:

你的源码:

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]

python中怎么把数组作为函数的输入

findAt函数可以使用可变参数*args,即findAt(*args)。同样还是将几十个坐标放到a列表中,然后直接调用findAt(*a)

怎样用python将数组里的数从高到低排序

1、首先我们定义一个列表输入一串大小不一的数字。

2、可以用sort()方法对定义的列表排序,注意,sort只是对列表排序,它没有返回一个值。

3、输入print列表名即可得到排序后的列表数据。

4、倒序可以用这个reverse方法,把元素位置倒转过来。

5、然后再次print列表名,这样就会得到倒转顺序之后的列表数据。

5、如图两相对比即实现了从高到低和从低到高排序。

python 函数怎么返回两个数组参数

你的意思是 函数值返回值直接放到另一个函数当参数吧

实际上可以变通一下,返回的是元组,然后怎么拿到元组中的一个

最简单的就是使用[]

如果 return a,b,c ,想拿到b

使用 fun()[1] // 下标从0开始


网站标题:python数组函数参数 python数组方法
文章源于:http://cdiso.cn/article/dodpgcc.html

其他资讯