I was writing a script to inspect python's version on my system and I've noticed that python -V writes to the error stream, while python -h, for instance, uses the standard output. Is there a good reason for this behavior?
Why?
Because it's not the actual output of your actual script.
That's the long-standing, standard, common, typical, ordinary use for standard error: everything NOT output from your script.
Why does python -V write to the error stream?