Should I define functions inside or outside of main()?

chishaku picture chishaku · Jul 31, 2014 · Viewed 12.1k times · Source

After reading the following, I think I understand the value of wrapping even the simplest of scripts in a main() function.

Should I define all my functions inside or outside main()?

Is there a right or wrong way? What are the advantages and disadvantages of both approaches?

Answer

TheSoundDefense picture TheSoundDefense · Jul 31, 2014

I would discourage defining functions inside of main(), especially if you have multiple files in your Python script. Any function B defined inside of function A cannot be used by anything outside of function A, severely limiting its usability. Functions defined inside main() cannot be imported elsewhere, for example.

Defining functions inside of main() lets you easily override other functions you may have written elsewhere that have the same name, but the instances where this is really useful are few and far between, and you should not be doing it as a general practice. Overall there are many more reasons for defining functions outside of main() than there are for defining them inside, and if you're learning Python that's definitely how you should handle it.