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?

  • qx128@lemmy.world
    link
    fedilink
    arrow-up
    12
    arrow-down
    1
    ·
    8 days ago

    Nothing prevents you from putting a call to “main()” in the global scope

    • jacksilver@lemmy.world
      link
      fedilink
      arrow-up
      16
      ·
      8 days ago

      The point of the name==main logic is that it checks if that is the file that was invoked (like running python filename.py). If you just put a main() in the global scope it will be called either when the file is invoked or loaded (which can cause unintended consequences).

      • littlewonder@lemmy.world
        link
        fedilink
        arrow-up
        2
        ·
        7 days ago

        Dumb person question: if it’s good practice to do this so things don’t go sideways, shouldn’t it be a built-in feature/utility/function/whatever?

        • jacksilver@lemmy.world
          link
          fedilink
          arrow-up
          2
          ·
          edit-2
          7 days ago

          It is “built-in” as the name is part of python. However, Python runs top to bottom, rather than having a special entrypoint. So name is just a utility you can use in your design.

          While it can be a good practice to define a main entrypoint, that’s more of a design decision and not hard rule. Many applications would not benefit from it because there is only one way to actually call the application to begin with.

          Edit: Also not a dumb question. All programming languages have unique elements to them due to how they were envisioned and or developed over time (Pythons 30 years old)

      • bastion@feddit.nl
        link
        fedilink
        arrow-up
        1
        ·
        7 days ago

        Due to the oneness of all things, I refuse to distinguish between library code and executable code. One and Zero are arbitrary limitations.