Python: Unterschied zwischen den Versionen

Zur Navigation springen Zur Suche springen
// via Wikitext Extension for VSCode
 
// via Wikitext Extension for VSCode
 
Zeile 1: Zeile 1:
==Lernplan für die Python C-API==
== Lernplan für Python ==


===Schritt 1: Einführung in die Python C-API===
=== Einführung ===
* '''Ziel''': Grundlegendes Verständnis der Python C-API und ihrer Verwendung.
* Was ist Python?
* '''Ressourcen''':
* Installation von Python
** [https://docs.python.org/3/c-api/index.html Python/C API Reference Manual]
* Erste Schritte mit Python
** [https://docs.python.org/3/extending/extending.html Einführung in die Python C-API]
* '''Aufgabe''': Lesen Sie die Einführung und machen Sie sich mit den grundlegenden Konzepten vertraut.


===Schritt 2: Einfache Python-Funktion aus C aufrufen===
=== Grundlagen ===
* '''Ziel''': Eine einfache Python-Funktion aus einer C-Anwendung aufrufen.
* Variablen und Datentypen
* '''Beispiel''':
* Operatoren
<syntaxhighlight lang="python">
* Bedingte Anweisungen (if, else, elif)
# example.py
* Schleifen (for, while)
def hello_world():
    return "Hallo Welt"
</syntaxhighlight>
<syntaxhighlight lang="c">
// example.c
#include <Python.h>


int main(int argc, char *argv[]) {
=== Datenstrukturen ===
    Py_Initialize();
* Listen
    PyRun_SimpleString("import example\n"
* Tupel
                      "result = example.hello_world()\n"
* Mengen
                      "print(result)");
* Wörterbücher
    Py_Finalize();
    return 0;
}
</syntaxhighlight>
* '''Aufgabe''': Kompilieren und ausführen des C-Programms.


===Schritt 3: Komplexere Python-Funktionen aufrufen===
=== Funktionen ===
* '''Ziel''': Komplexere Python-Funktionen aus C aufrufen und deren Rückgabewerte verarbeiten.
* Definition und Aufruf von Funktionen
* '''Beispiel''':
* Argumente und Rückgabewerte
<syntaxhighlight lang="python">
* Lambda-Funktionen
# example.py
def add(a, b):
    return a + b
</syntaxhighlight>
<syntaxhighlight lang="c">
// example.c
#include <Python.h>


int main(int argc, char *argv[]) {
=== Module und Pakete ===
    Py_Initialize();
* Importieren von Modulen
    PyRun_SimpleString("import example\n"
* Erstellen eigener Module
                      "result = example.add(3, 4)\n"
* Verwendung von Paketen
                      "print(result)");
    Py_Finalize();
    return 0;
}
</syntaxhighlight>
* '''Aufgabe''': Kompilieren und ausführen des C-Programms.


===Schritt 4: Fehlerbehandlung und Debugging===
=== Fehlerbehandlung ===
* '''Ziel''': Fehlerbehandlung und Debugging in der Python C-API verstehen.
* Ausnahmebehandlung mit try, except
* '''Ressourcen''':
* Benutzerdefinierte Ausnahmen
** [https://docs.python.org/3/c-api/exceptions.html Python/C API Error Handling]
* '''Aufgabe''': Fehler in den vorherigen Beispielen absichtlich einfügen und behandeln.


===Schritt 5: Python-Objekte und -Typen===
=== Fortgeschrittene Themen ===
* '''Ziel''': Verstehen, wie man mit Python-Objekten und -Typen in C arbeitet.
* Listen- und Dictionary-Komprehensionen
* '''Ressourcen''':
* Generatoren und Iteratoren
** [https://docs.python.org/3/c-api/objects.html Python/C API Object]
* Dekoratoren
** [https://docs.python.org/3/c-api/type.html Python/C API Type]
* Kontextmanager
* '''Aufgabe''': Erstellen und Manipulieren von Python-Objekten in C.


===Schritt 6: Erweiterungsmodule schreiben===
=== Objektorientierte Programmierung ===
* '''Ziel''': Ein eigenes Python-Erweiterungsmodul in C schreiben.
* Klassen und Objekte
* '''Beispiel''':
* Vererbung
<syntaxhighlight lang="c">
* Polymorphismus
// mymodule.c
* Kapselung
#include <Python.h>
 
static PyObject* mymodule_hello(PyObject* self, PyObject* args) {
    return Py_BuildValue("s", "Hallo Welt");
}
 
static PyMethodDef MyModuleMethods[] = {
    {"hello", mymodule_hello, METH_VARARGS, "Gibt 'Hallo Welt' zurück."},
    {NULL, NULL, 0, NULL}
};
 
static struct PyModuleDef mymodule = {
    PyModuleDef_HEAD_INIT,
    "mymodule",
    NULL,
    -1,
    MyModuleMethods
};
 
PyMODINIT_FUNC PyInit_mymodule(void) {
    return PyModule_Create(&mymodule);
}
</syntaxhighlight>
* '''Aufgabe''': Kompilieren und das Modul in Python importieren.
 
===Schritt 7: Abschlussprojekt===
* '''Ziel''': Ein kleines Projekt, das die erlernten Fähigkeiten kombiniert.
* '''Projektidee''': Ein C-Programm, das mehrere Python-Funktionen aufruft und die Ergebnisse verarbeitet.
 
===Zusammenfassung===
* '''Ressourcen''': Nutzen Sie die offizielle Python-Dokumentation und Tutorials.
* '''Übung''': Regelmäßiges Üben und Experimentieren mit der Python C-API.
* '''Dokumentation''': Dokumentieren Sie Ihre Ergebnisse und Erkenntnisse.
 
Viel Erfolg beim Lernen der Python C-API!
Abgerufen von „https://ahrensburg.city/Python