 Python uses duck typing and has typed objects but <unk> variable names . Type constraints are not checked at compile time ; rather , operations on an object may fail , signifying that the given object is not of a suitable type . Despite being dynamically typed , Python is strongly typed , forbidding operations that are not well @-@ defined ( for example , adding a number to a string ) rather than silently attempting to make sense of them . 
