Remix.run Logo
zozbot234 4 days ago

Python is a dynamic language where everything happens at run time, including checks of variable types. So you can already do this.

nephanth 4 days ago | parent | next [-]

Python has static typechecking which, while not perfect, works pretty well as long as you're not actually trying to circumvent it (or manipulating things "too dynamically")

eru 4 days ago | parent [-]

I think Python actually has multiple, different static typechecking systems, depending on which checker you use.

Python itself only gives you type annotations, but doesn't specify what they are supposed to mean.

(I think. Please correct me if I am wrong.)

nephanth 3 days ago | parent [-]

You are slightly wrong.

Python does allow you to put anything in annotations. ( pep 3107 that defines type annotations says that explicitly [1]).

But it also defines a type checking annotations, which is a specific convention for using pep 3107 annotations. Type annotations were introduced in PEP 484 and updated in a lot of subsequent peps. The python typing system is fully specified in [3].

It does have several implementations, although the reference implementation is mypy

[1]: https://peps.python.org/pep-3107/#rejected-proposals

[2]: https://peps.python.org/pep-0484/

[3]: https://typing.python.org/en/latest/spec/index.html

bluGill 4 days ago | parent | prev [-]

The problem with runtime is when you make a mistake it can be a long time before you find out. Compile time means a large class of problems is prevented without perfect test coverage. On a small project it isn't a big deal but when you have hundgeds of developers over decades you will miss something