if __name__ == __main__:
# some code
The above code is something you'll see a lot when seeing other peoples' code in Flask. But what does this mean and why do people use it?
To start, let's create a new Python program and write this line of code in it:
# first_module.py
print(f"First module's name: {__name__}")
What you will get in your console after running python first_module.py is:
First module's name: __main__
So wtf is happening here?
Before Python runs any code it creates a few special variables. __name__ is one of those special variables. It then sets the __name__ variable equal to __main__. It does this because we ran a Python file directly to first_module.py when we entered python first_module.py.
Now, let's import first_module.py into a new module called second_module.py. Your first module should look exactly the same. In second_module.py just enter:
import first_module
print(f"Second module's name: {__name__}")
Now, if you run python second_module.py you get the following in return:
First module's name: first_module
Second module's name: __main__
The first module's __name__ is now set to first_module and the second module's __name__ is now set to __main__.
Are you picking up what I'm putting down here?
Whatever file we decide to run like python whatever.py, __name__ will be set to __main__ in whatever.py because that's where we ran the file directly!
if __name__ == __main__:
# some code
The reason why you see this line of code often is because it's checking to see if the current file was being run directly by Python or to another file. Sometimes you want code to only run when it's the main file.
Top comments (1)
Shameless plug:
Entry points in Python
Demian Brecht ・ Apr 9 ・ 7 min read