Possible Duplicate:
Python or Ruby Interpreter on iOS
I just discovered this apps pypad and python for ios
They have like an interpreter an editor
So which app would you recomend
But most importantly, how does this interpreter work, and where can i see an example of how the obj c and python get to work togheter?
Thanks!
Python for iOS and iPadOSPyto also provides a complete development environment for running Python 3 including many third-party libraries and system integration on an iPad or iPhone.
Pyto is a Python 3.10 IDE for iPhone and iPad. Run code directly on your device and offline. You can run scripts from Shortcuts and code your own home screen widgets. and more!
You can write scripts that access sensor and location data, your photo library, contacts, reminders, the clipboard, and much more. You can also use Pythonista to build interactive multi-touch experiences, custom user interfaces, animations, and 2D games.
I am the sole creator of Python for iOS so that is of course what I would recommend, but a good indicator for your personal decision is the reviews & ratings of each App. It took me weeks to figure out how to properly integrate python into Objective-c for this App but here is the best resource to get you started (keep in mind that ObjC is just a superset of C):
http://docs.python.org/c-api/
Also, here is an example of calling a function defined in myModule
. The equivient python would be:
import myModule
pValue = myModule.doSomething()
print pValue
In 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);
}
For much more documentation check out: Extending and Embedding the Python Interpreter
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With