Tutti i parametri richiesti devono essere inseriti prima di qualsiasi argomento predefinito. Semplicemente perché sono obbligatori, mentre gli argomenti predefiniti no. Sintatticamente, sarebbe impossibile per l'interprete decidere quali valori corrispondono a quali argomenti se le modalità miste fossero consentite. A SyntaxErrorviene sollevato se gli argomenti non sono indicati nell'ordine corretto:
Diamo un'occhiata agli argomenti delle parole chiave, usando la tua funzione.
def fun1(a="who is you", b="True", x, y):
... print a,b,x,y
Supponiamo che sia autorizzato a dichiarare la funzione come sopra, quindi con le dichiarazioni di cui sopra, possiamo effettuare le seguenti chiamate (regolari) di argomento posizionale o parola chiave:
func1("ok a", "ok b", 1) # Is 1 assigned to x or ?
func1(1) # Is 1 assigned to a or ?
func1(1, 2) # ?
Come suggerirai l'assegnazione delle variabili nella chiamata di funzione, come verranno utilizzati gli argomenti predefiniti insieme agli argomenti delle parole chiave.
>>> def fun1(x, y, a="who is you", b="True"):
... print a,b,x,y
...
Riferimento O'Reilly - Core-Python
Dove questa funzione utilizza gli argomenti predefiniti sintatticamente corretti per le chiamate di funzione sopra. La chiamata degli argomenti delle parole chiave si rivela utile per essere in grado di fornire argomenti posizionali fuori ordine, ma, insieme agli argomenti predefiniti, possono anche essere usati per "saltare" anche gli argomenti mancanti.
def myfunction(position_arguments, *arguments, **keywords):`....`