this post was submitted on 21 Nov 2023
256 points (90.0% liked)

Programmer Humor

32050 readers
1576 users here now

Post funny things about programming here! (Or just rant about your favourite programming language.)

Rules:

founded 5 years ago
MODERATORS
 
you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 27 points 10 months ago (1 children)

Python is strongly typed, but it is also dynamically typed.

[–] [email protected] 9 points 10 months ago (2 children)

TIL. Obviously I've avoided using it much.

So how does that work? Is there a few implicit conversions that are allowed, but if you really write something weird it will complain?

[–] [email protected] 11 points 10 months ago (1 children)

Yes, it has no implicit conversions like JS or R. It does, however, allow you to not specify the type of a variable and even change it without complaining. Even if you add types these are only hints that won't generate errors unless you use external type checking (e.g. mypy).

[–] [email protected] 9 points 10 months ago (2 children)

example:

i = 5.0//2

list[i]

throws an error because i is double and the list-index expects an integer.

so for it to work the code needs to look like this:

i = int(5.0//2)

list[i]

meanwhile this works:

i=5

i= 'abcde'

[–] [email protected] 2 points 10 months ago (1 children)
[–] [email protected] 3 points 10 months ago (1 children)

It is but if you start with a float you get a float back.

[–] [email protected] 2 points 10 months ago (1 children)

You're right, I did not know that. Thanks!

[–] [email protected] 1 points 10 months ago

Was really surprised by this too, because iirc Python 2 did not do this.

[–] [email protected] 1 points 10 months ago (1 children)

you can do i: int to make this error out

[–] [email protected] 6 points 10 months ago (1 children)

No, type hints are not enforced.

[–] [email protected] 1 points 10 months ago
[–] [email protected] 6 points 10 months ago

In python you always have the right type, cause everything is an object