[Python-Dev] unexpected import behaviour (original) (raw)
Nick Coghlan ncoghlan at gmail.com
Thu Jul 29 14:56:21 CEST 2010
- Previous message: [Python-Dev] unexpected import behaviour
- Next message: [Python-Dev] unexpected import behaviour
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Thu, Jul 29, 2010 at 4:32 PM, Daniel Waterworth <da.waterworth at gmail.com> wrote:
Hi,
I'm not sure if this is a bug or not, I certainly didn't expect it. If you create a file called test.py with the following contents, class Test: pass def test1(): import test print Test == test.Test if name == 'main': test1() and then run it ($ python test.py), it'll print False. Now try: $python import test test.test1() and it'll print True. Is this behaviour expected? What was the rationale for it if is?
The behaviour is expected, but there's no particularly deep rationale for it - the interpreter just doesn't go out of its way to try and figure out what main would have been called if it had been imported rather than executed (your script will still print False even if you run it via "python -m test").
We certainly could put main into sys.modules under both names (i.e. "main" and "test" in your example), but the backwards compatibility implications of doing so aren't particularly clear.
Cheers, Nick.
-- Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia
- Previous message: [Python-Dev] unexpected import behaviour
- Next message: [Python-Dev] unexpected import behaviour
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]