Peng Yu <pengyu...@gmail.com> writes:
> On Wed, Sep 21, 2016 at 11:14 PM, Ben Finney <ben+pyt...@benfinney.id.au>
> > [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
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 |