Certainly, but you're typically much more in control of what you send than what you receive.
If, however, the manual says “integer” then it should complain loudly the user is breaking the contract.
Yep, that's why I prefer mypy/typeguard and type annotations for those sorts of things over checking in the body. It's frequently much, much easier to read, and self-documenting, since most IDEs have support for that when calling the function nowadays.