[Tutor] Why use main() ?

Mats Wichmann mats at wichmann.us
Wed Jul 5 18:47:39 EDT 2017

On 07/05/2017 09:45 AM, Zachary Ware wrote:
> On Wed, Jul 5, 2017 at 10:37 AM, David Rock <david.rock at gmail.com> wrote:

>> I personally find using main() cumbersome, but many examples I come
>> across use main().  Is there some fundamental benefit to using main()
>> that I'm missing?
> In no particular order: testing, encapsulation, and reusability.  With
> a "main()" function (which, recall, can be named whatever you like; it
> doesn't have to be "main") you can directly call the function in your
> tests to make sure it acts the way you want.  The encapsulation of the
> "main" code in a "main()" function also reduces your global state (and
> makes global state a bit more difficult to use), which is usually a
> good thing.  And finally, it makes it possible to use the "main()"
> function in some other piece of code that imports it.

As a vaguely contradictory position to a part of this (which I in the
main agree with): if your objective is to make a module, and also have
some code (perhaps including test code) which is run in the non-module
(aka not-imported) case, then stuffing that code in a function main()
means you've exposed that not-really-module-code as part of the module,
and might then want to take steps to hide it from clients so it doesn't
end up looking like part of the module API.

More information about the Tutor mailing list