[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