How to enforce automatic parameter casting in function definitions?
python, type-conversion, types
Solution
In Python 3 you could use function annotations and then write a decorator that converts (or tries to convert) arguments to the types you specify.
In Python 2 you can't do this in the way you seem to want. Python 2's syntax doesn't support putting anything in the function definition except the arguments themselves, and you can't alter Python's syntax to let you put types in there as well.
Problem
Consider this example of a function (and its use) that receives one parameter which is only meaningful as `int`: ``` def fun(index): index = int(index) # do something with index def main(): print fun(1e6) ``` I find that I keep repeating this pattern on several functions that deal with integers since it ensures that I really receive some integer number (note that `1e6` is a floating point instance). This is a bit cumbersome and if forgotten once it could produce problems (there is code that reacts differently to floating-point/integer/string/... values). So could this be somehow encoded in the function signature? E.g. something along the lines of this pseudo-code: ``` def fun(int index): # do something with index ```