Use aptly named parameters, always, add assert() statements for type checking whenever you feel mistakes could happen.
I can bet, based on my experience, that it's much "safer" (less error-prone) to use a language that allows calling functions with named parameters (where the order of parameters doesn't matter and you know exactly which parameter are you sending a value into), than a language like C++ or Java which has a static typing system but has no named parameteres, plus depends on argument order to call a function.
You should try using Python in this way.