Ok. Had to stop reading after the first paragraph. Python is not dynamically typed. Try doing print("Answer is:"+42) and the interpreter will not try to save you. Dynamic assignment != dynamic typing.
It is dynamically typed, because the typing is checked at runtime. Unlike a lot of other dynamically typed languages though it is strongly typed, because it does enforce type rules as you pointed out. That's not to say there's not a whole heap of other issues with this article though.