Ho un back-ground di C++ e cerco di imparare un po 'di python.Chiusure in pitone con chiusura tardiva
Whist Capisco le funzioni virtuali per C++, sfortunatamente non capisco cosa si intenda per associazione tardiva di chiusure in python.
Link: https://gist.github.com/deemson/8efabf56d67623ead804
Copy-Paste da un tutorial:
functions = []
for n in [1, 2, 3]:
def func(x):
return n*x
functions.append(func)
# You would expect this to print [2, 4, 6]
print(
'calling a list of bad closures and output is: {}'
.format(str([function(2) for function in functions]))
)
Che cosa esattamente sta succedendo qui? Quando la funzione viene aggiunta all'elenco, quali valori ha? Qualcuno può per favore semplificare questo codice per me capire.
Ma sarebbe questo non yeild [2 4 6] invece di [6 6 6] – RickMota
risposta di Daniel è corretta - ha catturato qualcosa che io non ho. Si riferiscono tutti a n, e poiché n si è stabilizzato al valore 2 alla fine, tutte le funzioni si comporteranno nello stesso identico modo. – Christian
Ho modificato per menzionare la dipendenza da n e sto lasciando la soluzione pubblicata per chiarire la connessione ai puntatori in C++. – Christian