On Wed, Feb 24, 2016 at 7:39 PM, Steven D'Aprano <steve+comp.lang.pyt...@pearwood.info> wrote: > On Thursday 25 February 2016 12:07, Dan Stromberg wrote: > >> Could people please compare and contrast the two ways of doing imports >> in the Subject line? > > from module import data; print(data) > > import module; print(module.data)
>> Is it fair to say that the former increases the surface area of your >> shared (sometimes mutable) state? > > No, I can't say that it is. If anything, the opposite is the case: it > decreases the surface area, because `data` now is local to the importing > (not imported) module. Rebinding data will not affect anything else. > There are two scenarios (`from module import...` versus `import ...`), each > with two cases: mutation, and rebinding: > > (1) from module import data > > (a) Mutation (only applies to mutable data like lists, dicts etc) > > In place mutation affects everything relying on module.data regardless of > how or where it is accessed. We have some scenarios where "data" is an instance of a class, and we need to monkey patch it for unit testing. My intuition is telling me that "module.data; data.mutate()" would be easier to monkey patch in a way that all modules will see. Is that fair to say? Thanks. -- https://mail.python.org/mailman/listinfo/python-list