Also, do y’all call main() in the if block or do you just put the code you want to run in the if block?

  • Doxin@pawb.social
    link
    fedilink
    arrow-up
    4
    ·
    2 days ago

    I mean yeah with no context that looks weird A/F, but given a couple details it’s fairly self-evident why it be like it do.

    1. Python doesn’t need a main function. It’ll just start running any top level code. This is nice for beginners learning programming because there’s no scaffolding or anything to set up. It just do the thing.
    2. python uses double underscores (usually called “dunder”) to mark “special” things. __name__ is a global variable containing the name of the current module. There’s a couple more like __file__ containing the filename of the current module.
    3. If you run a file directly __name__ gets set to "__main__". If it got set to something more sensible like "main" you couldn’t really call a file main.py without this breaking. Right now this only breaks for files called __main__.py but luck would have it that calling a file __main__.py already has a special meaning which makes these uses not clash.
    4. Sometimes you want code to only run if a module is run but not when it is imported. Checking if __name__ is set to __main__ is the easiest way to do this.

    Python for sure has a bunch of weirdness, but it all does mesh together into a rather nice programming language.