[Python-ideas] Replacing the if __name__ == "__main__" idiom (was Re: making a module callable)
Sean McQuillan
mcquillan.sean at gmail.com
Sat Nov 23 02:45:22 CET 2013
Adding a mainfunction decorator was mentioned in the other thread, seemed
interesting so I coded up a simple example to see how it works.
https://github.com/objcode/mainfunction/blob/master/mainfunction/mainfunction.py
>From the README:
@mainfunction
def main():
print "Hello, World."
vs:
if __name__ == '__main__':
print "Hello, World."
After playing with it briefly, I'm not sure it's a clear spelling win as
decorators are a fairly advanced topic to a new programmer. If statements
are one of the first programming constructs a new programmer learns - and
they don't leave a "magic taste".
Thoughts?
On Fri, Nov 22, 2013 at 3:47 PM, Rob Cliffe <rob.cliffe at btinternet.com>wrote:
>
> On 22/11/2013 22:27, Eric Snow wrote:
>
>> On Fri, Nov 22, 2013 at 3:02 PM, David Mertz <mertz at gnosis.cx> wrote:
>>
>>> I'm not in love with the *spelling* of " if __name__=='__main__': ", but
>>> I
>>> very frequently use the overall pattern.
>>>
>>> Much--or even most--of the time when I write a module, I like to allow
>>> it to
>>> either do a minimal case of its basic functionality and/or have the
>>> module
>>> run some basic unit tests as a quick check against breakage. So in
>>> contrast
>>> to Eric Snow, I try *to* make my files both scripts and modules. I know
>>> this isn't the only possible approach, but I don't think it's bad or
>>> uncommon.
>>>
>> You're right and I think it's a good pattern too. That is something
>> we do in the stdlib (and increasingly so). It slipped my mind. I've
>> also seen the idiom used for initiating tests (not that I necessarily
>> condone that practice), though less so in large projects. It would be
>> nice if we could address the issues outlined in PEP 395.
>>
> Yes. Having functionality and some test of that functionality in the same
> module simplifies file organisation/maintenance. The test typically also
> provides extra documentation of the functionality ("this is how you use
> it").
>
> Rob Cliffe
>
> _______________________________________________
> Python-ideas mailing list
> Python-ideas at python.org
> https://mail.python.org/mailman/listinfo/python-ideas
>
--
Sean McQuillan
415.990.0854
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20131122/39da607b/attachment-0001.html>
More information about the Python-ideas
mailing list