In bash (as opposed to zsh), that code should work as-given. That said, you might try ensuring that IFS contains a space:
IFS=' '
or, to reset it to defaults:
unset IFS
...before running that string. IFS determines which characters are used in shell-splitting, so if it doesn't contain a space, arguments separated by spaces won't be expanded.
Alternately -- preferably -- use an array:
arguments=( 2 3 4 )
python file.py "${arguments[@]}"
In that format, you can use arguments containing spaces:
arguments=(2 "thirty three" 4 )
...which will not work otherwise, for reasons documented in BashFAQ #050.