[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