On 11/25/2013 09:56 AM, Chris Angelico wrote:
On Tue, Nov 26, 2013 at 2:35 AM, Ron Adam<ron3200@gmail.com> wrote:
But in this case...
__main__ = "__main__" __name__ = __main__ assert __main__ is __name__
That should always work. I would think it was a bug if it didn't. Of course, that will work. But this isn't guaranteed to:
__main__ = "__main__" __name__ = "__main__" assert __main__ is __name__
It quite possibly will, but it's not guaranteed by the language. And this is more what's being done here - a separate literal.
Are thinking that the __main__ global would be defined after the main module is loaded? I was thinking that __main__ would be set to "__main__" first, then when the main module is loaded, it's __name__ attribute set to __main__ rather than "__main__". Exactly as the first example above. Or are you thinking there may be more than one main module? If you just feel strongly that using 'is' is a bad practice in this case, I'm fine with that. Cheers, Ron