Peng Yu <pengyu...@gmail.com> writes: > On Wed, Sep 21, 2016 at 11:14 PM, Ben Finney <ben+pyt...@benfinney.id.au> > wrote: > > [Importing ‘*’ from a module] will also make the names in the code > > impossible to automatically match against where they came from. > > Explicit is better than implicit; you are proposing to make an > > unknown horde of names in the code implicit and untraceable. > > This will make refactoring easy. If everything is explicit, when one > do refactoring, at two places need to be changed which can be a > burden.
That's completely backward: Importing ‘*’ from the module makes refactoring significantly *more* difficult. With explicit ‘import foo; foo.lorem()’, an automated tool can know that when ‘lorem’ changes to a different name, this module's use of ‘foo.lorem’ should also change. With non-explicit ‘from foo import *; lorem()’, then an automated too has *no way* of knowing that ‘lorem’ should change when you alter that name in the ‘foo’ module. So no, what you say above is the opposite of correct. Instead, using star import makes a rename *more* difficult to do correctly. -- \ “Faith is generally nothing more than the permission religious | `\ people give to one another to believe things strongly without | _o__) evidence.” —Sam Harris, _Letter to a Christian Nation_ 2006 | Ben Finney -- https://mail.python.org/mailman/listinfo/python-list