[Python] Questo, da Python, non me lo sarei mai aspettato

Daniele Zambelli daniele.zambelli a gmail.com
Lun 12 Feb 2024 09:30:18 CET


Il giorno lun 12 feb 2024 alle ore 08:47 Federico Fissore
<federico a fissore.org> ha scritto:
>
> Ciao
>
> no, l'ultima funzione sta rivalorizzando `par` ogni volta. Cambiala così e riesegui

Ok, questo mi pare che riproduca la situazione:

def prova(cambia, par=[]):
    if cambia:
        par.append('pippo')
        print("cambiata")
    print(par)

prova(False)        # []
prova(True)         # cambiata \n ['pippo']
prova(False)        # ['pippo']

Ma la cosa è un po' più sottile di come mi sembrava di avere capito, infatti:

def prova(cambia, par=[]):
    if cambia:
        par = ['pippo']
        print("cambiata")
    print(par)

prova(False)        # []
prova(True)         # cambiata \n ['pippo']
prova(False)        # []

def prova(cambia, par=''):
    if cambia:
        par = 'pippo'
        print("cambiata")
    print(par)

prova(False)        # ''
prova(True)         # cambiata \n 'pippo'
prova(False)        # ''

Mi sfugge ancora qualcosa...

Grazie, ciao.

-- 

Daniele

www.matematicadolce.eu

Perché la scuola,
invece di essere un luogo dove ci si allena a imparare,
è un luogo dove si fa finta di sapere?


Maggiori informazioni sulla lista Python