2.1.1 global weirds
robin at jessikat.fsnet.co.uk
Sat Aug 11 17:35:00 CEST 2001
In article <9l3f170adp at enews1.newsguy.com>, Alex Martelli
<aleaxit at yahoo.com> writes
>I agree: it's not good programming for any module to import
>from the main script. Dependencies should always be in the
>other direction -- main script importing modules, not vice versa.
>> Isn't this a wart?
>It's surely IMHO a wart in your program if you need a module
>to import from the main script.
>If you're asking, is it a wart of Python that it allows you to
>import the main script at all, my answer is that I don't think
>so: Python is not in the business of enforcing good programming
>practices. Python gives you all the tools you need to structure
>your programs well, and even provides a hint that "you really
>shouldn't be doing this unless you really know what you're
>doing" by having the main script's name decorated with
>underscores -- now if you still want to go ahead and do it,
>it's upon your head.
well I didn't write the write the original of the problem causing
scripts and have now rewritten exactly in the way you suggest.
The real wart I feel is that the module a has two names, one when run as
a script and the other when imported.
I suppose there is some overriding implementation issue, but it seems to
me that in the file a.py
__file__ and __name__ ought always to be defined and given the
appropriate 'right' values.
Since magic variables/names seem to be natural in python I would just
make __main__ true in the main script and false everywhere else. It's
truth value could be the module that corresponds to the main script.
That would break all the if __name__=='__main__' scripts so it could
never be done.
More information about the Python-list