Anfängerfragen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Gerri3d
User
Beiträge: 23
Registriert: Montag 17. Juli 2017, 07:39

Hallo, ich will mit Python beginnen, sinnvoll Projekte umzusetzen.
Nun ist mir C ein Begriff, C# hab ich schon mal gesehen.
Im Augenblick bin ich dabei, mir das Python Konzept bildlich darzustellen. Dazu ergeben sich einige Fragen:

1. Ich will mit Eclipse arbeiten - Sind Module nun das, was C-Files in C sind?
2. Wie werden Libs in Python genannt?
3. Ist Eclipse eine Gute Entwicklungsumgebung um mit Python 3 und Tkinter zu arbeiten?
4. Hab ihr gute Einsteigertutorials (vorzugsweise mit Eclipse und Tkinterbeispielen)
mfg
Gerri
Melewo
User
Beiträge: 320
Registriert: Mittwoch 3. Mai 2017, 16:30

Tkinter und Beispiele sind nicht auf eine einzelne Entwicklungsumgebung ausgerichtet. Zum Testen eignet sich IDLE von der Python-Standartinstallation. Beispiele sollten sich genügend finden lassen, ob hier im Forum oder anderswo. Wenn Du tiefer einsteigen möchtest, kommst Du mit Tkinter nicht an effbot.org vorbei. Module würde ich eher mit den Headerdateien von C vergleichen, zumindest was die Einbindung anbelangt, wie als Beispiel aus den C-Bibliotheken:

[codebox=c file=Unbenannt.c]#include <windows.h>[/code]
Oder eigene zur Anwendung gehörende:

[codebox=c file=Unbenannt.c]#include "resource.h"[/code]
Das würde dann in Python aussehen wie:

Code: Alles auswählen

from Modul import Klasse

# Oder:
import Modul
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

@Gerri3d: In C gibt es kein Modul-Konzept. In C++ sind Module das, was dort Namespaces sind, die können aber über mehrere Dateien verteilt sein oder aber eine Datei enthält mehrere Namespaces. Bei C# scheint das ähnlich zu sein. Im Gegensatz dazu hat Python einen Namespace pro Datei.

Was sind Libs? Python kennt als Organisationseinheit neben Modulen auch Packages. Wenn Du so willst, ist eine Lib ein Package.

Welchen Editor zum Schreiben Deiner Programme benutzt, ist Geschmacksache. Eclipse eignet sich dafür, mit der pydev-Erweiterung. Bei einigen IDEs ist Vorsicht geboten, da sie Programme nicht sauber von der IDE trennen, z.B. IDLE oder Spyder; diese sind nicht für's Programmieren geeignet, weil es zu seltsamen Seiteneffekten kommen kann.
BlackJack

@Gerri3d: Ad 1.) C hat nicht wirklich etwas vergleichbares zu Modulen weil C keine Namensräume hat. Was Module (und Packages) in Python sind. Gemeinsam ist, das Module, also in der Regel *.py-Dateien, genau wie *.c-Dateien Übersetzungseinheiten für den Compiler sind. Kompilieren muss man nicht explizit, Python merkt beim Importieren eines Moduls selbst, ob es schon bekannt ist oder der Quelltext neuer als das eventuell zwischengespeicherte übersetzte Modul ist. Und das CPython, die in C geschriebene Python-Implementierung von Python.org, übersetzte Module als Bytecodedateien speichert ist ein Implementierungsdetail. Das ist nicht spezifiziert und andere Implementierungen müssen das nicht machen, können anderen Bytecode verwenden, oder auch was ganz anderes machen.

Ein Vergleich mit Headerdateien hinkt ein bisschen, denn das ist bei C nahezu nur das kopieren von einer Datei in eine andere. Wenn man ein Modul in Python importiert, dann wird aber nicht dessen Quelltext an der Stelle eingesetzt, sondern der Code in dem Modul ausgeführt, sofern es der erste Importvorgang für dieses Modul im laufe des Programms ist, und danach dann je nach ``import``-Form das importierte Modul an einen Namen gebunden oder Werte aus diesem Modul an Namne gebunden. Sollte das Modul schon einmal importiert worden sein, dann werden nur die Namen gebunden.

In C wäre das also eher eine Bibliothek zur Laufzeit mit `dlopen()` zu öffnen und daraus dann Werte/die Adressen von Werten per `dlsym()` zu ermitteln und Variablen zuzuweisen. Ungetestet und ohne Fehlerbehandlung:
[codebox=c file=Unbenannt.c]void *module_handle;
SomeClass* (*SomeClass_new)(void);

module_handle = dlopen("libmodule.so", RTLD_LAZY);
*(void **) (&SomeClass_new) = dlsym(module_handle, "SomeClass_new");

/* ... */

dlclose(module_handle);[/code]

Ad 2.) Bibliotheken werden auch in Python Bibliotheken genannt. Sie bestehen üblicherweise aus einem Modul oder einen Package, also aus mehreren Modulen (und/oder Packages) die in einem Package zusammengefasst sind.

In dem Zusammenhang sind der Python Package Index, das ``pip``-Programm, und virtuelle Umgebungen Themen die man sich anschauen sollte.

Ad 4.) Ich weiss nicht was Eclipse in einem Python-Tutorial zu suchen hätte‽ Python ist unabhängig von der IDE in der man schreibt.

In der Python-Dokumentation befindet sich ein Tutorial das man IMHO irgendwann mal durchgearbeitet haben sollte. Wenn man schon in einer anderen Sprache programmieren kann, ist das wahrscheinlich auch für den Anfang geeignet.

Für GUI-Programmierung sollte man Python eigentlich schon ganz gut kennen und vor allem objektorientierte Programmierung, denn die braucht man bei GUI-Programmierung.

Ich persönlich habe immer eine IPython-Shell offen und starte Programme zum testen von der Kommandozeile. Letzteres um nicht irgendwelche komischen Effekte zu haben die daran liegen das eine IDE manchmal doch eine andere Umgebung zur Verfügung stellen als die in der ein eigenständiges Programm dann später tatsächlich läuft.

----

Am Ende vielleicht noch ein wichtiger Punkt für C-Programmierer: Wenn man in Python etwas mit Indexlaufvariablen in Schleifen macht, ist das in den allermeisten Fällen der Versuch C in Python zu schreiben. Es gibt nämlich fast immer einen Weg ohne Indexzugriffe.
Gerri3d
User
Beiträge: 23
Registriert: Montag 17. Juli 2017, 07:39

Vielen Dank an Euch alle!
Antworten