Ich habe ein schwieriges Verhalten von keyword only arguments Feature in Python3 bei der Verwendung mit partial. Sonstiges info für Schlüsselwort-Argumente.verstehen '*' "nur Schlüsselwort" argument notation in python3 Funktionen
Hier ist mein Code:
def awesome_function(a = 0, b = 0, *, prefix):
print('a ->', a)
print('b ->', b)
print('prefix ->', prefix)
return prefix + str(a+b)
Hier ist mein Verständnis von Teil:
>>> two_pow = partial(pow, 2)
>>> two_pow(5)
32
>>>
Was habe ich verstanden, in dem obigen Beispiel ist, partial
das zweite Argument zu pow
Funktion als einzigem macht Argument von two_pow
.
Meine Frage ist, warum hat folgende Arbeiten:
>>> g = partial(awesome_function, prefix='$')
>>> g(3, 5)
a -> 3
b -> 5
prefix -> $
'$8'
>>>
Aber ich Fehler in diese:
>>> awesome_function(prefix='$', 3, 5)
File "<stdin>", line 1
SyntaxError: non-keyword arg after keyword arg
>>>
Ich weiß, dass ich awesome_function
direkt von
>>> awesome_function(prefix='$', a = 3, b = 5)
a -> 3
b -> 5
prefix -> $
'$8'
>>>