It's not very usual to do what you're trying, so I recommend you take some time to learn about dictionaries and other data structures that might help you.
Said that, I see a way of achieving something like this:
The python method exec allows dynamic execution of python code, which in our case means running a line of code from a string.
So, if you'd normally use a = 1 to declare/attribute a variable named a with value 1, you can achieve the same result with exec("a = 1").
This allows you to use formatted strings to create variables from a list of variable names given as strings:
var_names = ["a", "b", "c", "d"]
for var in var_names:
exec("{} = {}".format(var, var_names.index(var)*2))
print(a)
print(b)
print(c)
print(d)
Once we're attributing to the variable the index of the name in the list multiplied by two, this should be the output:
0
2
4
6
It wasn't exactly clear to me what you want to do, so reading again the question I got the impression you might want the values returned by the ExcRange method to be stored on separate variables, not on a list, and if that's the case, good news: python syntax sugar is here to help!
def method():
return 1, 3, 5, 7
a, b, c, d = method()
print(a) # a = 1
print(b) # b = 3
print(c) # c = 5
print(d) # d = 7
On this case, the method returns a list with 4 elements [1,3,5,7], but if you assign the result to exactly 4 variables, Python unpacks it for you.
Note that if you assign the method to a single variable, this variable will store the list itself.
a, b, c, d = method()
print(a) # a = [1, 3, 5, 7]