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?

  • Dr. Moose@lemmy.world
    link
    fedilink
    English
    arrow-up
    19
    arrow-down
    4
    ·
    edit-2
    4 months ago

    Tbh reserving “main” is just a hacky if not more so than checking __name__ if you actually understand language design.

    • bastion@feddit.nl
      link
      fedilink
      arrow-up
      11
      arrow-down
      1
      ·
      4 months ago

      Yeah, this is it.

      What’s hacky about an introspective language providing environment to all of the executing code, so that the coder can make the decision about what to do?

      It would by hacky if Python decided “We’ll arbitrarily take functions named “main” and execute them for you, even though we already started execution at the top of the file.”

      For C, this is less so. The body of the file isn’t being executed, it’s being read and compiled. Without a function to act as a starting point, it doesn’t get executed.

    • namingthingsiseasy@programming.dev
      link
      fedilink
      arrow-up
      7
      ·
      4 months ago

      Reserving main is definitely more hacky. Try compiling multiple objects with main defined into a single binary - it won’t go well. This can make a lot of testing libraries rather convoluted, since some want to write their own main while others want you to write it because require all kinds of macros or whatever.

      On the other hand, if __name__ == "__main__" very gracefully supports having multiple entrypoints in a single module as well as derivative libraries.

      • Dr. Moose@lemmy.world
        link
        fedilink
        English
        arrow-up
        1
        ·
        4 months ago

        Most contemporary python tools like flask or uvicorn do exactly this and require an explicit entry point