As jgodfrey says, it would probably be best to combine your functions so you can call a single function with a varying parameter to get the effect you want.
However, if you really want to select from a hard-baked list of functions, you can use the call method which takes a string name
extends Node2D
const funcs = ["spawn_Player1", "spawn_Player2", "spawn_Player3", "spawn_Player4"]
func spawn_Player1():
print("This is spawn_Player1")
func spawn_Player2():
print("This is spawn_Player2")
func spawn_Player3():
print("This is spawn_Player3")
func spawn_Player4():
print("This is spawn_Player4")
func _ready():
for f in funcs:
call(f)
You would apply your logic to select from the array in _ready
Or, since the variable name is just a string, you could create the correct string on the fly in the loop in your example (but this is getting really ugly, and very easy to break)
var f = "spawn_Player" + str(i)
call(f)