Verfasst: 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.
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.