[Python] Sintassi sconosciuta...
Davide Brunato
brunato a sissa.it
Mar 16 Ott 2018 14:24:09 CEST
On 10/16/18 1:06 PM, Alessandro Dentella wrote:
> mi sono accorto dopo tanti anni di uso di Python di non avere idea di
> questa sintassi:
>
> [tmp_loc] = glob.glob(os.path.join(tmp_dest, '*'))
>
> che trovate usata qui:
>
> #L1740
>
> Che cosa fa? che senso ha usarla quando mi vengono in mente vari altri
> modi di ottenere quello che (forse, penso) faccia.
>
> Soprattutto, quella riga st creandomi problemi...
>
> Chi mi sa illuminare?
>
Può servire ad estrarre da un iterabile/lista/tupla una sequenza di
valori, generando un errore in caso di discordanza nel numero di
elementi o se l'operando a destra non è un iterabile:
>>> [a] = 1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable
>>> [a] = 1,
>>> a
1
>>> [a] = 1, 2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: too many values to unpack
>>> [a] = []
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: need more than 0 values to unpack
Credo sia equivalente alla sintassi con parentesi tonde, o a quella con
virgole, usata solitamente per il doppio assegnamento:
>>> a, b = [4, 5]
>>> a, b
(4, 5)
>>> a, = [6]
>>> a
6
Ciao
Davide
Maggiori informazioni sulla lista
Python