Python Saug-Punkte

written by Martin HĂ€cker on

Viele standard-funktionen und module in python haben zu kurze namen.

Das ist deshalb ein Problem weil, man diese Namen nicht fĂŒr lokale Variablen verwenden kann bzw. ungewollt eine Standardfunktion ĂŒberschreibt.

id zum Beispiel. Oder dict, list.

Module sind dabei aber auch Problemkandidaten - vor allem wenn man sie hĂ€ufig wie ein Objekt benutzt. Das json Modul macht mir immer wieder probleme, weil ich eine lokale Variable die json enthĂ€lt nun mal gerne json nennen wĂŒrde. json_serialization wĂ€re vielleicht ein besserer Name fĂŒr das Modul.

Die Standard-Bibliothek ist leider voll von solchen Beispielen und der Include-Mechanismus von Python der die Module quasi als Objekt im namespace des EmpfĂ€ngers verfĂŒgbar macht hilft da nicht wirklich weiter. Das ist zwar IMO eine bessere Idee als der C-PrĂ€prozessor #include (was Ruby ja zum Beispiel nachbaut) aber gerade bei so kurzen Namen kann das wirklich nerven.

Wenn man aus einem Modul ein Objekt importiert ist das interessanterweise kein Problem, da Objekte in Python (wenn sie sich an die Namenskonvention halten - leider auch oft nicht der Fall in der Standardbibliothek) immer mit einem Großbuchstaben anfangen und dadurch diese Namenskollision nicht auftritt.

FĂŒr mich ist da das Problem dass die Python Programmierer leider so eine Obsession damit haben alles möglichst kurz machen zu wollen - und dabei aber dem Programmierer der mit der (Standard-) Bibliothek arbeiten möchte gerade wieder Steine in den Weg legen dass kurz zu machen was fĂŒr Ihn am meisten sinn macht - lokale Variablen.

Das ist leider Premature Optimisation in Reinstkultur - und es stört mich beim Entwickeln von meiner Software. :-(