La domanda viene posta nel contesto di Python, ma è anche rilevante per tutte le lingue con supporto per i parametri denominati.
Se qualche entità nel mio codice (ad esempio un'implementazione di pubsub) o anche una semplice funzione accetta un callback, ha più senso chiamarlo con argomenti posizionali o con argomenti con nome?
def foo(on_foo_ended):
foo_result = await ...
# Call with positional argument:
on_foo_ended(foo_result)
# Call with named argument:
on_foo_ended(result=foo_result)
Una chiamata con argomenti posizionali non richiede alcuna definizione arbitraria dei parametri da parte dell'utente, ma può invece imporre un ordinamento arbitrario dei parametri. Gli argomenti con nome richiedono nomi di parametri corrispondenti, ma sono (in qualche misura) autodocumentanti e non obbligano l'utente ad ordinarli.
Supponendo che stiamo sviluppando una libreria, sarebbe preferibile usare la convenzione più comune se ce n'è una. Se non ce n'è, avrebbe senso preferire un modo all'altro? Suppongo che strategie complesse come "passare l'argomento posizionale quando c'è solo uno e gli argomenti nominati quando ci sono due o più" sarebbero troppo arbitrarie e probabilmente difficili da usare.