前两天有个一万多行的C++项目需要转PYTHON,逻辑非常复杂,要想看懂逻辑再用PYTHON写一遍预期时间比直接转要长,所以大家决定转PYTHON,遇到一些坑,这里简记一下。
最大的坑是数据结构,PYTHON没有数组,只能用LIST,C++的函数里数组直接传地址进去,可以进行各种操作,尤其是二维数组。PYTHON只能用LIST,二维数组只能嵌套LIST。C++可以传一个类对象的引用进一个函数。PYTHON得把这个类对象传进去,改变以后再传出来外面还得再=一下。其实PYTHON也可以传引用。传引用进一个函数注意事项:
1、不能在函数内部使用param = []或者param = list_other
2、不能在调用处传param + 3之类的
出现第2种情况时,可以使用一个零时arg_param = param[3:]使用arg_param传入然后函数调用出来以后再循环把值赋到原来的parm里。当然如果是const最好了,返回以后外面就不用再赋值了。
小技巧:第一步:先把C++代码翻译成“类似PYTHON的C++"中间代码。第二步:把这种中间代码翻译成PYTHON。第一步走完以后可以进行一次逻辑回测,看是否还能正常工作。
小技巧:第一步中尽量把传的数组能CONST的统统CONST掉,这其实是C++的编辑习惯问题,尽量养成能CONST的(无论传指针还是引用)都CONST。这样PYTHON就可以非常放心的直接传引用进去,里面不改变即可。
小技巧:CopyMemory拷贝数组,统统改成: