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?

  • Anomalocaris@lemm.ee
    link
    fedilink
    arrow-up
    4
    ·
    2 days ago

    I still wonder why.

    unless it’s for something that you want to work as an importable module and a standalone tool, then why do you need that?

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

      The main two reasons that I can think of to include this even when you have no intention of importing this as a library are:

      1. For unit testing you will need to import as a module.
      2. Sometimes I will run a python interactive interpreter and then import my script so that I can do some manual testing without needing to change my main function or if stmt.
    • nickwitha_k (he/him)@lemmy.sdf.org
      link
      fedilink
      arrow-up
      1
      ·
      edit-2
      2 days ago

      This is exactly why the conditional is used. It allows the script to function both as a standalone application and a library.

      ETA: Probably would make sense to just treat it as default behavior in the interpreter and only require the conditional to overwrite in cases where main is not the main function and/or pre-processing is needed.

    • grrgyle@slrpnk.net
      link
      fedilink
      arrow-up
      1
      ·
      2 days ago

      Oh that is a good point actually. It’s been a while since I have done any serious Python, so I’m not sure why you couldn’t just use convention instead of this conditional.

      For my part, if a Python script is meant to be executed, then I’ll give it a shebang, drop the .py, and simply mark it as executable in the filesystem. 🤷‍♂️