我不想在Python中编写整个Application的一小部分.
我试图了解PyObjC,但事情并不那么容易.
你能举个例子吗?我想在Nsstring变量中保存以下方法的结果.
def doSomething(): someInfos = "test" return someInfos解决方法 以下是调用myModule中定义的函数的示例.等效的python将是:
import myModulepValue = myModule.doSomething()print pValue
在Objective-c中:
#include <Python.h>- (voID)example { PyObject *pname,*pModule,*pDict,*pFunc,*pArgs,*pValue; Nsstring *nsstring; // Initialize the Python Interpreter Py_Initialize(); // Build the name object pname = PyString_FromString("myModule"); // Load the module object pModule = Pyimport_import(pname); // pDict is a borrowed reference pDict = PyModule_GetDict(pModule); // pFunc is also a borrowed reference pFunc = PyDict_GetItemString(pDict,"doSomething"); if (PyCallable_Check(pFunc)) { pValue = PyObject_CallObject(pFunc,NulL); if (pValue != NulL) { if (PyObject_isinstance(pValue,(PyObject *)&PyUnicode_Type)) { nsstring = [Nsstring stringWithCharacters:((PyUnicodeObject *)pValue)->str length:((PyUnicodeObject *) pValue)->length]; } else if (PyObject_isinstance(pValue,(PyObject *)&PyBytes_Type)) { nsstring = [Nsstring stringWithUTF8String:((PyBytesObject *)pValue)->ob_sval]; } else { /* Handle a return value that is neither a PyUnicode_Type nor a PyBytes_Type */ } Py_XDECREF(pValue); } else { PyErr_Print(); } } else { PyErr_Print(); } // Clean up Py_XDECREF(pModule); Py_XDECREF(pname); // Finish the Python Interpreter Py_Finalize(); NSLog(@"%@",nsstring);}
有关更多文档,请查看:Extending and Embedding the Python Interpreter
总结以上是内存溢出为你收集整理的在ios中运行一个简单的python脚本全部内容,希望文章能够帮你解决在ios中运行一个简单的python脚本所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)