On 10/27/17 2:05 PM, ROGER GRAYDON CHRISTMAN wrote:
While teaching my introductory course in Python, I occasionally see
submissions containing the following two program lines, even before
I teach about functions and modules:

if __name__ = '__main__':
...  main()

When I ask about it, I hear things like they got these from other instructors,
or from other students who learned it from their instructors, or maybe
from some on-line programming tutorial site.

I'm all on board with the first of these two lines -- and I teach it myself
as soon as I get to modules.

My question is more about the second.

Do "real" Pythonista's actually define a new function main() instead
of putting the unit test right there inside the if?

Or am I correct in assuming that this main() is just an artifact from
people who have programmed in C, C++, or Java for so long that
they cannot imagine a program without a function named "main"?


There's no need for "if __name__ == '__main__':" for unit tests. You can let unittest or pytest discover the tests themselves, and run them.

I often write this clause:

    if __name__ == '__main__':
        sys.exit(main(sys.argv))

Then I can write tests that call main() to be sure it does what I think it does.

Or, I can let setuptools entry_points handle that clause for me:

    entry_points={
        'console_scripts': [
            'coverage = coverage.cmdline:main',
        ],
    },


--Ned.
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to