On Thu, 05 Jul 2018 09:17:20 +0200, Christian Gollwitzer wrote: > Am 04.07.18 um 17:31 schrieb Steven D'Aprano: >> On Wed, 04 Jul 2018 13:48:26 +0100, Bart wrote: >> >>> Presumably one type hint applies for the whole scope of the variable, >>> not just the one assignment. >> >> You know how in C you can write >> >> int x = 1; # the type applies for just this one assignment x = >> 2.5; # perfectly legal, right? >> >> > Not sure what point you are trying to make, but your example compiles in > C, if you replace the '#' comment sign with '//'.
Oops. But... it compiles? Seriously? > Only it doesn't do > what you might think: the 2.5 is down-converted to an integer, therefore > x will be 2 in the end. There will be a compiler warning but no error. Sometimes I wonder how C programmers manage to write a bug-free "Hello World" program. No wonder it is described as a type-unsafe language or a weakly-typed language. I understand upcasting ints to floats, that's cool (even if a few languages take a hard line on that too, I don't). I understand Python's dynamic typing approach. I don't understand C requiring type declarations, then down-casting floats to integers. At least it shows a warning. But hell, who pays attention to C compiler warnings? There's *so many of them*. (And I bet that by default the warning is disabled, amirite?) -- Steven D'Aprano "Ever since I learned about confirmation bias, I've been seeing it everywhere." -- Jon Ronson -- https://mail.python.org/mailman/listinfo/python-list