Python Forum

Full Version: Questions about __name__
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
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]: