[Python] Argomenti funzione posizionali e opzionali

Daniele Zambelli daniele.zambelli a gmail.com
Mer 2 Dic 2020 14:49:51 CET


Il giorno dom 22 nov 2020 alle ore 18:47 Daniele Zambelli
<daniele.zambelli a gmail.com> ha scritto:
> [...]

Avevo proposto una soluzione basata su una parola chiave passata come parametro:

> Dato che il contenuto e la signature sono necessari per il
> funzionamento della funzione e che i due tipi di signature sono
> entrambi stringhe, io avrei fatto così:
>
> def modify_signature(content, signature, signature_type='id'):
>     if signature_type == 'id':
>         fa qualcosa
>     elif signature_type == 'name':
>         fa qualcosaltro
>     else:
>         raise ValueError(.........)

Mi erano rimasti dei dubbi... oggi leggendo le note alla versione 3.9
ho trovato una frase che mi ha confermato la fondatezza dei dubbi:
"This would avoid adding a new method, but for different behavior,
it's better to have two different methods than one method with a
keyword argument that selects the behavior."

Quindi la soluzione che proporrei oggi sarebbe:

def modify_signature_id(content, signature):
    < fa qualcosa>

def modify_signature_name(content, signature):
    <fa qualcosaltro>

Tanto chi chiama la funzione sa se se ha a disposizione un id o un name.

Ciao

-- 

Daniele

www.fugamatematica.blogspot.com

    giusto!
    nel verso
    forse è perché non guardiamo le cose
    Quando non ci capiamo,


Maggiori informazioni sulla lista Python