[Python-ideas] PEP for executing a module in a package containing relative imports
Christian Heimes
lists at cheimes.de
Sat Apr 21 16:25:57 CEST 2007
Steven Bethard wrote:
> But you have to understand a few things to understand why this works.
> You have to know that __name__ is the name of the module, and that if
> you want to find out the name of the main module, you need to look at
> sys.main. With the idiom::
>
> if __main__:
>
> all you need to know is that the main module has __main__ set to true.
>
>> IMO it's much less PIT...B then introducing __main__.
>
> Could you elaborate? Do you think it would be hard to introduce
> another module-level attribute (like we already do for __name__)? Or
> do you think that the code would be hard to maintain? Or something
> else...?
This is just my humble opinion. I'm new to Python core development.
Well, in my opinion a new module level var like __main__ isn't worth to
add when it is just boolean flag. With the proposed addition of sys.main
the same information is available with just few more characters to type.
If I recall correctly Python is trying to get rid of global variables in
Python 3000.
I don't think it's hard to add - even for me although I know less about
the Python core. I'm more worried about the side effect when people have
already used __main__ as a function. The problem is in 2to3.
If you like to introduce __main__ why not implement
http://www.python.org/dev/peps/pep-0299 ? It proposes a __main__(*argv*)
module level function that replaced the "if __name__ == '__main__'"
idiom. The __main__ function follows the example of other programming
languages like C, C# and Java.
I'm aware of the fact that the PEP was rejected but I think it's worth
to discuss it again.
Christian
More information about the Python-ideas
mailing list