Sto costruendo un gioco e, al fine di farlo funzionare, ho bisogno di generare un elenco di pre-costruito o pronti a chiamare espressioni. Sto cercando di fare questo con le espressioni lambda, ma sto correndo in un problema che genera la tabella di ricerca. Il codice che ho è simile al seguente:
import inspect
def test(*args):
string = Test Function:
for i in args:
string += str(i) +
print(string)
funct_list = []
# The problem is in this for loop
for i in range(20):
funct_list.append(lambda: test(i, Hello World))
for i in funct_list:
print(inspect.getsource(i))
L'output che ottengo è:
funct_list.append(lambda: test(i, Hello World))
funct_list.append(lambda: test(i, Hello World))
funct_list.append(lambda: test(i, Hello World))
funct_list.append(lambda: test(i, Hello World))
...
e ho bisogno di andare:
funct_list.append(lambda: test(1, Hello World))
funct_list.append(lambda: test(2, Hello World))
funct_list.append(lambda: test(3, Hello World))
funct_list.append(lambda: test(4, Hello World))
...
Ho provato quanto segue entrambi e né lavoro
for i in range(20):
funct_list.append(lambda: test(i, Hello World))
for i in range(20):
x = (i, Hello World)
funct_list.append(lambda: test(*x))
La mia domanda è come si fa a generare elenchi di espressioni lambda con alcune delle variabili all'interno della espressione lambda già impostato.