Si consideri il seguente Python 3 Codice:semantica contestuale attribuzione in Python
a = [-1,-1,-1]
i = 0
E ora considerare le seguenti due versioni di un'assegnazione simultanea su entrambi A e I:
Assegnazione versione 1:
a[i],i = i,i+1
Assegnazione versione 2:
i,a[i] = i+1,i
Mi aspetto che queste due versioni di assegnazioni simultanee siano semanticamente equivalenti. Tuttavia, se si controlla i valori di A e I, dopo ogni una delle assegnazioni simultanee, si ottiene diversi stati:
Uscita per print(a,i)
dopo la versione assegnazione 1:
[0, -1, -1] 1
Uscita per print(a,i)
dopo l'assegnazione versione 2 :
Non sono un esperto della semantica di Python, ma questo comportamento sembra strano. Mi aspetterei entrambe le assegnazioni si comportino come versione assegnazione 1. Inoltre, se si seleziona il seguente link, ci si aspetterebbe entrambe le versioni di assegnazione di condurre allo stesso stato:
Link to book excerpt in Google Books
C'è qualcosa che mi manca per quanto riguarda Semantica Python per compiti simultanei?
Nota: Questo comportamento strano non sembra essere riproducibili, per esempio, quando la variabile a
ha tipo intero; sembra richiedere a
di essere di tipo elenco (forse questo è il caso per qualsiasi tipo mutabile?).
Grazie gnibbler, vedo il punto tecnico da te sollevato sulla valutazione delle tuple; da quel punto di vista tutto ha perfettamente senso. Tuttavia, sono ancora in perdita da un punto di vista della semantica dal momento che la semantica di assegnazione simultanea non è quindi molto simultanea. Dato che sono nuovo in Python, vorrei cogliere le mie possibilità e chiedere se esiste un documento ufficiale con una definizione formale/semi-formale della semantica di assegnazione per Python. Sei a conoscenza di un documento del genere? – hquilo
@hquilo: "assegnazione simultanea" non appare nemmeno nella documentazione di Python. 'a, b = 1, 2' è solo una scorciatoia per' (a, b) = (1, 2) ', che si chiama sequenza di spacchettamento. – Blender
Grazie a entrambi @gnibler e @Blender; le tue risposte chiariscono le cose. – hquilo