On 04/07/2018 06:52, Steven D'Aprano wrote:
On Sun, 01 Jul 2018 17:22:43 -0500, Tim Daneliuk wrote:

x: int = 3
[...]

This strikes me as syntactic noise.  Python is dynamically typed and
will remain so. Why clutter the language - even optionally - with stuff
like this?

There's no need to declare x:int = 3 since any linter worth its salt
ought to be able to infer that x is an int if it is assigned the value 3.
Anyone writing that needs to be slapped with a clue-stick, it's not 1971
any more, type inference ought to be considered bare minimum for even a
halfway decent type checker or linter.

Presumably one type hint applies for the whole scope of the variable, not just the one assignment. Which means that here:

   x: int = 3
   x = f(x)

you know x should still an int after these two statements, because the type hint says so. Without it:

   x = 3
   x = f(x)

x could be anything.

A better example would be:

     x: int = None

which ought to be read as "x is an int, or None, and it's currently None".

In that case the type hint is lying. If both x and y have type hints of 'int', then with this:

   z = x + y

you might infer that z will be also 'int' (whether it it type hinted or not). But if either of x and y can be None, then this might not even execute.

If something is an int, then make it an int:

   x: int = 0

--
bart
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to