Steven D'Aprano wrote: > def translate(text): > import string > all=string.maketrans('','') > badcars=all.translate(all,string.letters+string.digits) > table=string.maketrans(badcars,'_'*len(badcars)) > return text.translate(table) > > No pollution.
And no efficience.Recalculating all,badcars and table was not an acceptable solution ,sorry if I didn't state this point :( > Then after you are finished with the bindings, delete them: > > import string > all=string.maketrans('','') > badcars=all.translate(all,string.letters+string.digits) > table=string.maketrans(badcars,'_'*len(badcars)) > def translate(text): > return text.translate(table) > # clean up the temporary variables so as to prevent namespace pollution > del string; del all; del badcars; del table Well,a solution but not a programming pattern for an elegant language ? More this is also loosing informations. Probably I've not been clear with the word pollution and the example is poor. I didn't mean 'binding to unuseful informations' but 'bindings in a non -structured organization' I restate the problem.Python is in some ways unable to project the module structure inside the module.Or ... namespace pattern instances seems not deriving from a common pattern. Finally, (before I get polemic which is not my aim) I start thinking classes (namespaces defined via 'class' keyword) are a specialization of generic namespaces in which there-defined methods get a special way of being called and __call__ method is a way of cloning access to them. (Thin ice....) Don't really know if modules can be defined as specialization of generic namespaces and be placed somewhere next to classes. Even worse I get with methods and function namespaces. Rob Williscroft wrote: > After 3 or 4 iterations I refactored you code to this: > > def translate( text ) > import string > all=string.maketrans('','') > badcars=all.translate(all,string.letters+string.digits) > TABLE = string.maketrans(badcars,'_'*len(badcars)) > > global translate > def translate( text ): > return text.translate(TABLE) > > return translate( text ) There is a way to access 'all' and 'badcars' here? In my trial translate.all and translate.badcars can be accessed easily and maybe coherently. Thanks a lot, and don't tell me 'the dictator has marked the trail' ;) ___________________________________ Yahoo! Mail: gratis 1GB per i messaggi e allegati da 10MB http://mail.yahoo.it -- http://mail.python.org/mailman/listinfo/python-list