Anfangen mit Python

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
snatch
User
Beiträge: 25
Registriert: Sonntag 20. August 2006, 01:49

Hallo,
durch Freunde und letzendlich auch durch eigene Überzeugung, habe ich beschlossen anzufangen in Zukunft meine Projekte in Python zu programmieren. Nun habe ich da aber einige Verständnisprobleme die ich einfach nicht gelöst bekomme. Da ich hauptsächlich mit Webprogrammierung zu tun habe, hab ich vor Python auch darauf anzuwenden.

1. Was genau bedeuten die doppelten oder einfachen Untersriche?
2. In vielen Scripten sehe ich in den letzten Zeilen folgenden Code:

Code: Alles auswählen

if __name__ == '__main__':
Wozu ist diese IF-Abfrage gut, was bewirkt sie?
3. Wie werden standartmäßig die Erstellung von HTML-Seiten und das Abfragen einer Datenbank abgewickelt? Wie macht ihr das speziell mit der HTML Erstellung worauf muss man da achten? Sehr wahrscheinlich werde ich in Zukunft mit Django arbeiten, vorher würde ich aber auch gerne wissen wie es ohne Django geht.
4. Wo erfahre ich welche Klassen ich für welche Funktionen einbinden muss?
5. Warum wird in Funktionen immer der Wert self genutzt?

Das wären vorerst meine Fragen...
Ich programmiere jetzt schon seit ungefähr 2 Jahren in PHP und bin in diesem Bereich meiner Meinung nach auch recht gut. Python ist für mich jetzt totales Neuland. Ich würde sehr gerne in Zukunft mit dieser Sprache abreiten, nur sollten sich bis dahin meine Probleme gelöst haben. :)
Ich gehe mal davon aus das viele von euch Antworten auf diese Fragen haben, was ja auch logisch für einen ist der jeden Tag mit ihr arbeitet. Naja, ich hoffe mal das ihr mir helfen könnt...!?

mfg
snatch
BlackJack

snatch hat geschrieben:1. Was genau bedeuten die doppelten oder einfachen Untersriche?
Doppelte Unterstriche am Anfang *und* Ende eines Namens zeigen an, dass es sich um einen Namen handelt, der für den Interpretierer eine besondere Bedeutung hat. Solche Namen sollte man nicht selbst vergeben.

Ansonsten ist es Konvention Namen, die nicht zur öffentlichen API gehören, mit einem Unterstrich zu beginnen. Das sagt anderen Programmieren: Finger weg, das ist intern bzw. wenn Du das benutzt, dann tust Du das auf eigene Gefahr.

Es gibt für Methoden noch die Möglichkeit Namen mit zwei Unterstrichen zu beginnen die dann vom Interpretierer verändert werden, so das man "pseudo-private" Attribute hat. Der Mechanismus ist hauptsächlich dazu gedacht um Namenskollisionen in Vererbungshierarchien zu vermeiden. Da diese in Python im Allgemeinen sehr flach sind, tritt das Problem nicht so häufig auf.
2. In vielen Scripten sehe ich in den letzten Zeilen folgenden Code:

Code: Alles auswählen

if __name__ == '__main__':
Wozu ist diese IF-Abfrage gut, was bewirkt sie?
`__name__` ist so ein besonderer Name. Normalerweise ist darüber der Name des importierten Moduls zu finden. Ausser wenn das Modul als Programm gestartet wurde, dann ist der `__name__` == ``__main__``. Alles nach der Abfrage wird also nur ausgeführt, wenn das Modul als Programm gestartet wurde. Das ermöglicht zum einen Programme zu schreiben, die man auch als Modul importieren kann, zum Beispiel um die Funktionen im interaktiven Interpretierer auszuprobieren, und zum anderen kann man Module "ausführbar" machen und dort zum Beispiel Testcode unterbringen.
3. Wie werden standartmäßig die Erstellung von HTML-Seiten und das Abfragen einer Datenbank abgewickelt? Wie macht ihr das speziell mit der HTML Erstellung worauf muss man da achten? Sehr wahrscheinlich werde ich in Zukunft mit Django arbeiten, vorher würde ich aber auch gerne wissen wie es ohne Django geht.
"Standardmässig" ist gut. :-) Es gibt viel zu viele Webframeworks für Python. Für dynamisches HTML benutzt man eines der vielen Vorlagensysteme. `Django` hat auch eins. Ich persönlich mag `kid` und `Cheetah`. Vorlagensysteme gibt's aber in noch grösserer Zahl als Webframeworks. :-)
4. Wo erfahre ich welche Klassen ich für welche Funktionen einbinden muss?
Im Modul-Index in der Dokumentation.
5. Warum wird in Funktionen immer der Wert self genutzt?
Der Name `self` in Methoden ist immer an das Objekt gebunden auf dem die Methode aufgerufen wurde. Arbeite am besten mal das Tutorial in der Dokumentation durch.
snatch
User
Beiträge: 25
Registriert: Sonntag 20. August 2006, 01:49

BlackJack hat geschrieben:Doppelte Unterstriche am Anfang *und* Ende eines Namens zeigen an, dass es sich um einen Namen handelt, der für den Interpretierer eine besondere Bedeutung hat. Solche Namen sollte man nicht selbst vergeben.
Was heißt "besondere Bedeutung"?
Wie soll ich das verstehen?
pyStyler
User
Beiträge: 311
Registriert: Montag 12. Juni 2006, 14:24

Doppelte Unterstriche am Anfang und am Ende eines Bezeichners z.b
__init__ kennzeichnen Objekte, die mit einem bestimmten magischen Verhalten verbundne sind.
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

snatch hat geschrieben:
BlackJack hat geschrieben:Doppelte Unterstriche am Anfang *und* Ende eines Namens zeigen an, dass es sich um einen Namen handelt, der für den Interpretierer eine besondere Bedeutung hat. Solche Namen sollte man nicht selbst vergeben.
Was heißt "besondere Bedeutung"?
Wie soll ich das verstehen?
Dass für den Interpreter Objekte mit diesen Namen (meistens Methoden) nicht nur "gewöhnliche" Objekte sind, sondern eine Spezialbedeutung haben, wie z.B. die Überladung des "+"-Operators mittels __add__.
Antworten