In python 3, there is no limit on the value of integers, as mentioned in this post.
This does have an interesting side effect with numpy, where depending on the integer value, you might get an object or an integer.
np.array(int('9'*3)).dtype
# int64
np.array(int('9'*38)).dtype
# object
np.array(2**64-1).dtype
# uint64
Can someone explain to me why python 3 does not have a limit on integer size, and how do they do it (under the hood).