News for hackers. Stuff that matters.
Re:Why Python keeps growing, explained by dragonwriter on Friday March 03, 2023 @05:26PM (#35015883)
> Apart from the call to write instead of print everything else there is a standard Python pattern for writing testable, type-safe arg-parsing code!

Its…not, actually. A more typical, and testable, example of python would be:

  import sys

  def main(args: list[str]) -> None:
    sys.stdout.write("hi\n")

  if __name__ == "__main__":
    main(sys.argv)
Your version:

* Isn’t testable because it runs the sys.exit() call unconditionally on import, so there is no way to import the module and call main() from test code.

* Fails with an error, because main has a required argument that it isn’t supplied in the unconditional main() call inside the sys.exit() call.

* Isn’t following a typical python idiom by returning a value from a function and have it be unconditionally 0; if the only options are a fixed return and a exception somewhere, the convention is to return None (which doesn’t require an explicit return.)

* Since a normal exit is the default response of ending the main program, sys.exit() is unnecessary here; “Exit with 0 if main() returns successfully, and with an abnormal exit on exceptions in main” is achieved by just calling main() and having nothing after it in the main program.

There are no comments on this comment yet.