<type 'int'> mit <type 'bool'> addieren?

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.
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

lunar hat geschrieben:..., die Implementierung derselbe in den eigenen Quelltext zu kopieren?! Verzeih mir den Spott, doch ich finde es ziemlich merkwürdig, eine eigene Implementierung mit dem Verweis darauf zu verteidigen, dass die Bibliothek es exakt genauso macht.
Wenngleich es wohl keine Rolle spielt, muss ich mich hier doch verteidigen. Dass calendar.monthrange() in derselben Weise wie ich vorgeht, habe ich gerade vor 15 Minuten entdeckt, als ich aufgrund von EyDu's Beitrag zu meiner Schande überhaupt erst erfuhr, dass es diese Funktion gibt. Von kopieren kann also keine Rede sein. Vielmehr fühle ich mich dadurch, dass die Autoren des calendar-Moduls in diesem Punkt genauso verfahren, bestätigt.
Du hast natürlich damit Recht, dass eine bereits vorhandene Bibliothek auch verwendet werden will. Allerdings versuche ich bei der Lösung eines so kleinen Problems wie der Ermittlung der Tagesanzahl eines Monats, eigene Funktionen zu verwenden. Darüber mag man geteilter Ansicht sein, ich ziehe das einem

Code: Alles auswählen

from calendar import monthrange
vor.
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Hoffentlich gehört zu der eigenen Funktion auch die entsprechende Dokumentation und Tests...
lunar

@mutetella: Das war ironisch gemeint, ich habe nicht behauptet, dass Du kopiert hättest. Ich habe mich nur über Deine Art der Verteidigung gewundert ...

Ansonsten kannst Du in Deinem eigenen Programm nach Deinem Belieben verfahren, doch wirst Du wohl hier nicht viele Anhänger für diese Einstellung gewinnen können. Ich persönlich würde die Verwendung einer eigenen Implementierung gegenüber einer Bibliothek immer kritisieren, sofern nicht Gründe gegen die Bibliothek selbst sprechen.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

lunar hat geschrieben:@Leonidas: Ich wundere mich durchaus, was Du bei dieser Variante machen wolltest, liefert sie doch mithin nicht das erwartete Ergebnis. Die Addition wird nämlich vor dem bedingten Ausdruck ausgewertet, so dass der Ausdruck im Gesamten entweder 2 oder 0 ergibt, aber nicht 1.
Uhm, ja, Klammern eben...
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

lunar hat geschrieben:Ansonsten kannst Du in Deinem eigenen Programm nach Deinem Belieben verfahren, ...
Da hab' ich mich gestern vielleicht etwas zu absolut ausgedrückt. Es fehlt mir bei weitem die Erfahrung, aufgrund derer ich sagen könnte, es so oder anderst zu machen. In diesem konkreten Fall habe ich mich einfach sehr darüber gefreut, endlich einmal etwas in einer Art und Weise gelöst zu haben, mit der offensichtlich auch Profis das Problem angegangen sind. Und soetwas lässt man sich natürlich nicht gleich wieder nehmen... :) calendar.monthrange() nicht zu importieren war also nicht eine Entscheidung besseren Wissens, sondern schlichtweg purer Stolz auf meinen [ironie]genialen Einfall, die jeweilige Tagesanzahl eines Monats zu ermitteln.[/ironie]
lunar hat geschrieben:Ich persönlich würde die Verwendung einer eigenen Implementierung gegenüber einer Bibliothek immer kritisieren, ...
Wenn Freude und Stolz verflogen sind, werde ich also isleap() und monthrange() importieren. Bleibt für mich nur die Frage nach dem warum? Schießt man nicht mit Kanonen auf Spatzen, wenn man wegen 5 oder 6 Zeilen Programmcode auf eine externe Bibliothek zugreift? Bei einer built-in Funktion ist das ja überhaupt kein Thema, aber extra importieren?
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
lunar

@Leonidas: Schon klar, aber Du verstehst, worauf ich hinaus will: Klammern sind leicht vergessen, und unmittelbar ersichtlich ist der Fehler eben nicht.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

mutetella hat geschrieben:
lunar hat geschrieben:Ich persönlich würde die Verwendung einer eigenen Implementierung gegenüber einer Bibliothek immer kritisieren, ...
Wenn Freude und Stolz verflogen sind, werde ich also isleap() und monthrange() importieren. Bleibt für mich nur die Frage nach dem warum? Schießt man nicht mit Kanonen auf Spatzen, wenn man wegen 5 oder 6 Zeilen Programmcode auf eine externe Bibliothek zugreift? Bei einer built-in Funktion ist das ja überhaupt kein Thema, aber extra importieren?
Das bisschen Speicher was mehr verbraucht wird ist irrelevant gegenüber der notwendigen Dokumentation und den Tests die du ebenfalls nochmal schreiben musst. Mal abgesehen davon dass du damit auch mehr Code zu maintainen hast. Das mag jetzt nicht so schlimm klingen aber die LOC für die Tests sind üblicherweise mehr als man für die Implementation gebraucht hat, zumindest ist dass Gegenteil ein guter Indikator dafür dass etwas schief gelaufen ist.

Insgesamt machst du dir also unnötig viel Arbeit für die du auch noch die Verantwortung tragen musst wenn etwas schief geht.
lunar

@DasIch: Wenn was schiefgeht, trägt man selbst immer die Verantwortung. Den Kunden interessiert es meist wenig, ob der Fehler in der Bibliothek liegt oder im eigenen Quelltext.
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

DasIch hat geschrieben:Insgesamt machst du dir also unnötig viel Arbeit für die du auch noch die Verantwortung tragen musst wenn etwas schief geht.
lunar hat es schon gesagt dem Kunden oder auch nur Anwender des Scriptes ist egal wo der Fehler liegt, die verantwortung trägst du trotzdem.
Sicher bedeutet "unnötig viel Arbeit", aber "wenn etwas schief geht" und weißt du wenigsten warum, weil du dich ja mit dem Thema schon auseinander gesetzt hast.

Da in diesem Fall er es schon geschrieben hat, ist das doch sehr praktisch.
Ich ziehe zwar auch schon fertige Libs vor, aber in so einem Fall ist doch einfach nur eine Geschmackssache welches man Nutzt.
(Vorausgesetzt natürlich es Funktioniert :D)
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
lunar

@Xynon1: „Geschmackssache“ ist es mithin am wenigsten, den die übrigen, von DasIch angeführten Punkte sprechen noch immer gegen eine eigene Implementierung. Man muss diesen Quelltext mithin zusätzlich testen und dokumentieren, während diese Arbeit bei einer Bibliothek von anderen übernommen.

Für Fehler im eigenen Programm ist man zwar in jedem Fall verantwortlich, doch bei einer etablierten Bibliothek ist davon auszugehen, dass diese korrekt funktioniert, so dass man zumindest für diesen Teil gar nicht erst in der Verlegenheit kommen mag, Verantwortung für Fehler zu übernehmen.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Das gleiche Argument kann man auf den gesamten Stack anwenden. Behebt ihr auch Bugs im Interpreter? Betriebssystem? Hardware? Wobei man muss ja nicht so tief gehen, ein Modul in der stdlib welches in C implementiert ist zu fixen ist schon problematisch genug, speziell bei Sachen die in Python schwierig zu implementieren oder zu langsam wären.

Irgendwo muss man eine Grenze ziehen und in einem solchen Fall ping ich lieber den Maintainer an oder wer immer zuständig ist und schilder mein Problem oder schreib ein Bugreport und wenn ich die Zeit hab kann ich auch selbst noch einen Patch schreiben.

Klar eventuell muss ich immernoch monkey patchen oder eine modifizierte Version der Abhänigkeit mitliefern aber ich kann nicht alles wissen und konzentriere mich lieber auf dass was relevant ist um weiter zu kommen.
lunar

@DasIch: Ob ich Fehler im Interpreter behebe, ist völlig unerheblich. Wer gegenüber Deinem Kunden für diese Fehler verantwortlich ist, zählt, und das sind eben im Regelfall nicht die Entwickler des Interpreters.
Antworten