On 25/11/2013 14:12, Steven D'Aprano wrote:
(4) Like #3 above, but make it a (read-only?) global variable, like __debug__. Possibly spelled "__main__". The idiom becomes:
if is_main: ...
if __main__: ...
Pros:
- Some people might feel that "this is the main module" feels more like a global variable than a function call.
Cons:
- If read-only, that requires some magic behind the scenes.
- If not read-only, then people will mess about with it and get confused.
+0.5 if read-only, -0.5 if not.
I like this idea (a global variable called __main__), provided that it can be implemented without slowing down access to other variables. Say __main__ did not exist as a real variable, so attempting to read it triggered a NameError behind the scenes. The error handling code could then check for a name of '__main__' as a special case. Does this make sense? Con: A variable which changes its value without being assigned to is more magical/unexpected than a function (is_main()) which returns different values at different times. But I think people would soon get used to it, and find it convenient. The behaviour could be overridden (if the run-time allowed it) by defining a "real" variable called __main__. Well, among consenting adults, why not? It might even be useful. Rob Cliffe