Python

2012-03-17 32 views
7

Olası Çoğalt: Sadece bu pypad ve python for iosPython

Onlar bir tercüman gibi bir editör var

Yani apps keşfedilen
Python or Ruby Interpreter on iOS

hangi app tavsiye ederim

Ama en önemlisi, bu tercüman nasıl çalışır ve obj c ve python'un toghetere nasıl işlediğine dair bir örneği nasıl görebilirim?

Teşekkürler!

cevap

11

Python for iOS'un tek yaratıcısıyım, bu yüzden elbette tavsiye ederim, ancak kişisel kararınız için iyi bir gösterge, her bir Uygulamanın & incelemesinden ibarettir. Düzgün bu App Amaç-c içine python nasıl entegre anlamaya haftamı aldı ama burada (objc C sadece bir üst olduğunu unutmayın) başlamak için iyi bir kaynaktır:

http://docs.python.org/c-api/


Ayrıca, burada myModule'da tanımlanan bir işlevi çağırmanın bir örneği. equivient piton olacaktır: Amaç-c

import myModule 
pValue = myModule.doSomething() 
print pValue 

:

#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); 
} 

çok daha dokümantasyon check out için: Extending and Embedding the Python Interpreter

+0

HI adam sayesinde çok: Ben de bu konuda bir yazı yazdım gizli işlevsellik ?, çok teşekkürler !, harika bir iş! – MaKo

+0

https://github.com/pudquick/PythonForiOSPatches Eksik yerleşik modüller bunun ne işe yarıyor? Yüklemek için Ho? Teşekkürler – MaKo

+0

Ah, bu bir kullanıcının v1.1 için yarattığı şeylerdi ama ben v1.2'de uygulandım. – chown

10

Geçenlerde Python gömmek yardım etmek küçük bir kütüphane, ObjP yazdı Objective-C uygulamalarında. Ben iOS uygulaması için Python var ve bunu bayıldım, ama birlikte git göbek bağlantısını referans ne bir sorum var,

http://www.hardcoded.net/articles/embedding-python-in-objc.htm

+0

(yakın zamanda) iOS ile test edildi mi? – bijan