SIngleton from __defaults__
Terry Reedy
tjreedy at udel.edu
Thu Jan 23 19:10:17 EST 2014
> Johannes Schneider <johannes.schneider at galileo-press.de> Wrote in
> message:
>> On 22.01.2014 20:18, Ned Batchelder wrote:
>>> On 1/22/14 11:37 AM, Asaf Las wrote:
>>> Chris is right here, too: modules are themselves singletons, no matter
>>> how many times you import them, they are only executed once, and the
>>> same module object is provided for each import.
>>
>> I'm not sure, if this is the whole truth.
>>
>> think about this example:
>>
>> cat bla.py
>> a = 10
>>
>> cat foo.py
>> from bla import a
This makes a a global in foo, bound to 10
>> def stuff():
>> return a
This a refers to the global a in foo.
>> cat bar.py
>> from foo import stuff
>> print stuff()
>> a = 5
This bar.a is irrelevant to the behavior of stuff.
>> print stuff()
>>
>> from bla import *
>> print a
>>
>> python bar.py
>> 10
foo.a == 10
>> 10
foo.a == 10
>> 10
bla.a == 10
>> here the a is coming from bla
Twice
and is known in the global namespace.
There is no global namespace outside of modules.
>> the value differs in stuff()
No it does not.
and before/after the import statement.
foo.a does not change. bar.a is never used.
>> So the instance of the module differs
Nope. Each of the three module instances is constant. The bindings
within each could change, but there are no rebinding in the code above.
--
Terry Jan Reedy
More information about the Python-list
mailing list