I was wondering why instead of just starting up the main function, if __name__ == '__main__'
is used before starting the main function? Also, what decides what __name__ is equal to? It is usually '__main__', but in what cases is it not? Thanks in advance!
This line is used to distinguish execution behavior when the file is imported as a module, or is executed as a script. When it is executed as a script builtin variable __name__
is set to __main__
, when the file is imported as a module __name__
is set to filename
.
Let we have myfile.py
with that construction. When you call this file e.g. python myfile.py
the code under if-statement will be executed. If you import the file as a module, e.g. put somewhere import myfile
, the code under if-statement wouldn't be executed.
I understand now. Thank you!
if __name__ == '__main__':
print('Run by interpreter')
else:
print('Module was imported')
Output:
andre@andre-GP70-2PE:~$ python test_main.py
Run by interpreter
andre@andre-GP70-2PE:~$ ipython
Python 3.7.3 (default, Apr 15 2019, 14:17:18)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.5.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]: import test_main
Module was imported
In [2]: