Reply to Chris:
Yes I know that. sys.stdout exists there for that reason only. But if we can't print then it means we changed it somewhere. I just gave an example. I've seen code where constants can be really necessary. Python lets us use these things because it's a programming language. But libraries are not programming languages. They are there to enhance the programming. Suppose we're testing out a library. Now maybe there's something really critical we shouldn't change. We must access but mustn't change. And we mistakenly changed it. Now we're not gonna deploy our application. So we don't run a type checker. Now we run and the program crashes and yet we can't find where is the bug. Why should tools be needed to solve such an obvious problem? Why can't Python itself help us like it does when we add int and str?