(geschlossen)Counter innerhalb einer Funktion?

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.
BlackJack

Mittwoch 13. August 2008, 07:12

Zu den *-Importen: Wenn man mehr als einen davon verwendet, und irgendwann in der Zukunft ein Modul in einer neuen Version einen Namen verwendet, der auch in einem anderen, auf diese Weise importierten Modul verwendet wird, gibt's Probleme. Und Programme sollten nicht plötzlich, ohne das man am Quelltext selber etwas ändert, "kaputt gehen". Das ist sehr überraschend und nervig.

Wenn man sich an *-Importe gewöhnt, steigt die Gefahr für so etwas, da die Namen dann über ganze Importhierarchien verteilt werden. Man holt sich dann nicht nur alle Namen aus einem Modul in den Namensraum, sondern auch alle, die dieses Modul per * importiert hat und so weiter. Damit führt man das Konzept von Modulnamensräumen ad absurdum.

Namenskonflikt, den ich schon ein paar mal in Anfängerquelltext gesehen habe: `PIL.Image` und `Tkinter.Image`. Das ist also kein rein theoretisches Problem.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mittwoch 13. August 2008, 09:26

BlackJack hat geschrieben:Namenskonflikt, den ich schon ein paar mal in Anfängerquelltext gesehen habe: `PIL.Image` und `Tkinter.Image`. Das ist also kein rein theoretisches Problem.
Ja, wobei ich zugeben muss, dass dies aus irgendeinem Grund seit Jahren nicht mehr zur Sprache kam. Also entweder finden Anfänger unsere alten Threads dazu oder sie nutzen Tkinter/PIL nicht mehr.

Aber für Namenskonflikte braucht man gar nicht 3rd-Party Module zu nehmen; wenn man per *-Import ``os`` reinzieht, überschreibt man das Builtin ``open()`` durch ``os.open``.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Antworten