Mam pewne zachowanie związane z trudnościami w funkcji keyword only arguments w python3 używane z partial. Inne info tylko dla argumentów zawierających słowa kluczowe.zrozumienie notacji argumentu "*" "tylko słowo kluczowe" w funkcjach python3
Oto mój kod:
def awesome_function(a = 0, b = 0, *, prefix):
print('a ->', a)
print('b ->', b)
print('prefix ->', prefix)
return prefix + str(a+b)
Oto moje rozumienie częściowej:
>>> two_pow = partial(pow, 2)
>>> two_pow(5)
32
>>>
Co mam rozumieć to w powyższym przykładzie, partial
sprawia, że drugi argument do pow
funkcji jako jedyny Argument z two_pow
.
Moje pytanie brzmi, dlaczego następujące prace:
>>> g = partial(awesome_function, prefix='$')
>>> g(3, 5)
a -> 3
b -> 5
prefix -> $
'$8'
>>>
ale pojawia się błąd w tym:
>>> awesome_function(prefix='$', 3, 5)
File "<stdin>", line 1
SyntaxError: non-keyword arg after keyword arg
>>>
wiem, że mogę zadzwonić awesome_function
bezpośrednio
>>> awesome_function(prefix='$', a = 3, b = 5)
a -> 3
b -> 5
prefix -> $
'$8'
>>>