"$var" expands the value of variable var to a single shell word. The result is not subject to word splitting in the context in which the epxansion takes place. This is why with ...
var="--circular True"
python python_script.py --input input_file "$var"
... Python sees a single argument --circular True instead of multiple arguments.
In this case, you could just leave out the quotes around the expansion of $var on the python command line, but this is a poor idea in general. The best way to store multiple command-line arguments in a variable in Bash is to use an array:
var=(--circular True)
python python_script.py --input input_file "${var[@]}"
In particular, the form "${var[@]}" expands to all the elements of array var, each element as a separate word. This handles cases that are not handled by using a scalar var and expanding it unquoted does not. For example, with ...
var=(--label 'plausible example')
python python_script.py --input input_file "${var[@]}"
... two arguments are derived from the variable, --label and plausible example. However, with this alternative ...
var="--label 'plausible example'"
python python_script.py --input input_file $var
... the arguments derived from var are --label and 'plausible example' (note the extra quotes), and with this ...
var="--label plausible example"
python python_script.py --input input_file $var
... three arguments are derived from var: --label, plausible, and example.
This becomes even more important when the arguments are derived from user input, so that you do not have the opportunity to tune your usage to the specific data.