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
    link
    fedilink
    English
    14
    edit-2
    4 days ago

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

      • Dr. Moose
        link
        fedilink
        English
        13 days ago

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

    • 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.

        • @bitfucker@programming.dev
          link
          fedilink
          14 days ago

          I don’t understand. What do you mean by deciding what the code should do in the context of language design? Can you give a concrete example? I am confused because the “main” function is required when you make an executable. Otherwise, a library will not contain any main function and we could compile it just fine no? (Shared library)

          • @_stranger_@lemmy.world
            link
            fedilink
            24 days ago

            Python is an interpreted language that doesn’t need a main function explicitly. You can define any package entry points you want at the package config level. (setup.py, etc)

            example: What I meant was I prefer language that treat developers like adults. If I want ptrhon’s “ux” to hide some functions or objects I can do that with underscores, but nothing is private, a developer using my library can do whatever they want with it, access whatever internals they want (at their own risk of course)