Haskell und OCaml kenne ich nicht, da kann ich nichts dazu sagen.
Ansonsten wüsste ich nicht, was an meiner Aussage "gewagt" sein soll - Beanstandung fehlender Typsicherheit hat doch nichts damit zu tun, wie lange man schon mit einer Programmiersprache zu tun hat.
Das geht doch schon bei der Definition von Methoden los, wo ich in C++, C#, Java,... schon an der Signatur erkenne, was rein und was raus kommt.
Und wenn eine Methode einen TreeNode als Argument verlangt, und ich möchte ihr beim Aufruf einen String schicken, dann meckert schon der Compiler.
Auch wichtig: Code-Vervollständigung (oder Calltips oder Intellisense oder wie man es bezeichnen möchte) funktioniert viel besser, wenn in der Methode bekannt ist, um welche Typen es geht.
Python Kenntnisse erweitern
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Das liegt daran dass sie keine Typinferenz haben. Du kannst auch Typsicherheit ohne diese Definitionen haben.testalucida hat geschrieben:Das geht doch schon bei der Definition von Methoden los, wo ich in C++, C#, Java,... schon an der Signatur erkenne, was rein und was raus kommt.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
In den meisten fortgeschrittenen Scripten steht am Ende
welchen Sinn hat dies. Warum sollte man eigentlich alles in Funktionen packen und nicht in eine While Schleife oder ähnliches?
Code: Alles auswählen
if __name__ == '__main__':
## verschiedene Funktionen
Doch, weil du (noch) nicht richtig einschätzen kannst, wie wichtig oder undwichtig Typsicherheit ist. Dazu solltest du schon mindestens ein größeres Projekt mit Python abgeschlossen haben. Dann wirst du sicher feststellen, dass die (Unit-)Tests die Aufgabe von Typenchecks übernehmen und man damit keinerlei Probleme hat.testalucida hat geschrieben:Ansonsten wüsste ich nicht, was an meiner Aussage "gewagt" sein soll - Beanstandung fehlender Typsicherheit hat doch nichts damit zu tun, wie lange man schon mit einer Programmiersprache zu tun hat.
Das Leben ist wie ein Tennisball.
Deine Frage ist zwar ein wenig aus dem Zusammenhang gerissen, aber ich werde sie trotzdem mal beantworten:min hat geschrieben:In den meisten fortgeschrittenen Scripten steht am Endewelchen Sinn hat dies. Warum sollte man eigentlich alles in Funktionen packen und nicht in eine While Schleife oder ähnliches?Code: Alles auswählen
if __name__ == '__main__': ## verschiedene Funktionen
Der "if __name__ == '__main__'"-Guard ist dazu gedacht, dass deine Code nur aufgerufen wird, wenn du das Modul direkt ausführst. So ermöglichst du zum Beispiel, dass dein Modul von anderen importiert werden kann, ohne dass dein Programm ausgeführt wird.
In Funktionen packst du alles, um deinen Code zu modularisieren und wiederverwendbar zu machen. So verringerst du die Abhängigkeiten, teilst alles in einzelne Aufgaben auf und machst deinen Code testbar.
Was du jetzt mit dem while meinst verstehe ich nicht, bringe doch mal ein Beispiel.
Sebastian
Das Leben ist wie ein Tennisball.
@Cofi: Das Rätsel war nicht so schwer.
Und um noch was zur eigentlichen Frage zu sagen. Verbessern tut man sich fast automatisch mit zunehmender Erfahrung. Das erfordert aber ständiges und regelmäßiges Anwenden. Auch wenn es nur einen offensichtlichen Weg geben soll, gibt es doch meistens mehrere Wege zur Lösung. Auch mal versuchen den nicht offensichtlichen Weg einzuschlagen. Hat die größten AHA Effekte.
Code: Alles auswählen
print "0x"+"%X"*9%tuple(map(ord,"Darmstadt"))
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Joa das sollte es auch nicht Aber folgender Code macht das schoenerhendrikS hat geschrieben:@Cofi: Das Rätsel war nicht so schwer.Code: Alles auswählen
print "0x"+"%X"*9%tuple(map(ord,"Darmstadt"))
Code: Alles auswählen
>>> print "0x" + "Darmstadt".encode("hex")
0x4461726d7374616474
@testalucida: Bei C++ vom Typsicherheit zu sprechen ist fahrlaessig. Im Gegensatz zu C++ ist Python zum Beispiel streng typisiert. Python kennt nur keine statische Typisierung, sondern benutzt Protokolle, d.h. duck typing. Das Probleme erst zur Laufzeit erkannt werden ist durchaus ein Problem. Aber C++ loest das nicht besser, sondern kann nur die syntaktischen Fehler konkret aufzeigen, andere semantische Fehler nicht wirklich. Diese "Sicherheit" ist truegerisch. Auch bei statisch typisierten Sprachen benoetigt man Unit Tests. (Die Vervollstaendigung hat btw wenig mit Typen zu tun, sondern damit dass der Code statisch ist)
@min Man sollte keinen Code auf die oberste Ebene packen, weil er beim Importieren ausgefuehrt wird. Passiert das nicht (oder ist es noetig) ist das durchaus vertretbar. Aber durch die Gliederung kann man den Code gut beschreiben und damit lesbarer machen.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
Noch eine kleine Frage. Zwar ist es noch stärker aus dem Kontext gerissen, aber ich kenne bis lang keinen passenderen Ort für diese vorerst letzte Frage.
Ich würde gerne in PyGame ein kleines Programm schreiben, in Vollbild, bei dem man einmal eine Ebene hat auf der das Menü und andere Auswahlmöglichkeiten sind und "darunter" eine Ebene mit einer graphischen Oberfläche. Wie sollte man so etwas am besten angehen. Was in welche Funktionen stecken. Über eine kleine Starthilfe wäre ich sehr dankbar.
Ich würde gerne in PyGame ein kleines Programm schreiben, in Vollbild, bei dem man einmal eine Ebene hat auf der das Menü und andere Auswahlmöglichkeiten sind und "darunter" eine Ebene mit einer graphischen Oberfläche. Wie sollte man so etwas am besten angehen. Was in welche Funktionen stecken. Über eine kleine Starthilfe wäre ich sehr dankbar.