In Python, capisco che gli argomenti predefiniti arrivano alla fine e che gli argomenti non predefiniti non possono seguire un argomento predefinito. Questo va bene. Ad esempio:Ordine di default e argomenti non predefiniti
>>> def foo(x=0, y):
return x, y
SyntaxError: non-default argument follows default argument
OK come previsto.
Tuttavia, che dire del caso in cui voglio che il primo argomento sia uno predefinito? Come per esempio, come risulta dal codice precedente, x
deve essere il primo argomento e dovrebbe avere un valore predefinito di 0.
È possibile farlo? Chiedo perché anche nella funzione range
, sto indovinando è qualcosa di simile:
def range(start=0, end):
pass
Così come è questo fatto e se non è possibile, come è questo implementata da range
? Nota che sto insistendo sul fatto che il primo argomento sia il default, cioè l'intero punto. Sto usando range
come esempio perché si adatta perfettamente al mio problema. Naturalmente si potrebbe implementare range
come def range(end, start=0)
, ma non è questo il punto.
Quasi identico alla mia risposta, ma più chiaro e cinque minuti prima. Quindi, +1. –
Potrebbe voler aggiungere un argomento 'step' per coerenza con built-in. –
+1. È perfetto. Mi sento stupido a non pensarci. – user225312