I’m not a Python programmer, but I’m writing a Python script for OFFLIRSOCH 2024.
Since I apparently refuse to use Stack Overflow, can somebody please let me know which of the following approaches is more idiomatic in Python?
Accessing sys.argv directly in main():
#!/usr/bin/env python3
import sys
def main() -> int:
print(sys.argv)
return 0
if __name__ == "__main__":
sys.exit(main())
Explicitly passing sys.argv to main():
#!/usr/bin/env python3
import sys
from typing import List
def main(argv: List[str]) -> int:
print(argv)
return 0
if __name__ == "__main__":
sys.exit(main(sys.argv))
Making sys.argv the default value of an optional argument to main():
#!/usr/bin/env python3
import sys
from typing import Optional, List
def main(argv: Optional[List[str]] = None) -> int:
if argv is None:
argv = sys.argv
print(argv)
return 0
if __name__ == "__main__":
sys.exit(main())
I’m using Python based on the assumption that most people who would use my script will already have it installed, and because the standard library is pretty deep. In other words, even though Python itself might be considered “bloated” by the standards of many small computing aficionados, I’m convinced that a single-file Python script is a good way to distribute a zero-dependency program of even moderate complexity.