następujący kod:Pass kwargs z nieprawidłowymi pary klucz = wartość funkcjonować
def f(a=1):
pass
kwargs = {}
kwargs['a'] = 1
kwargs['b'] = 2
f(**kwargs)
(poprawnie) podnosi wyjątek:
Traceback (most recent call last):
File "tt.py", line 8, in <module>
f(**kwargs)
TypeError: f() got an unexpected keyword argument 'b'
czy istnieje sposób, z functools lub inne, aby uzyskać wokół tego i dowiedzieć się, które argumenty nie zostały wykorzystane przez funkcję, aby móc przekazać je do innej funkcji? Na przykład mogę mieć inną funkcję:
def g(a=None, b=None):
pass
, z którą chcę zadzwonić później, np.
g(**kwargs)
ale chcę tylko b
być przekazywane ponieważ a
zostało już „zużyte” w poprzedniej funkcji.
Teraz wiem, że nie jest to idealne kodowanie, ale są przypadki, w których może się przydać, a użytkownik jest łatwy do wytłumaczenia użytkownikowi, np. "Dodatkowe parametry zostaną przekazane do f, a wszelkie parametry nieprzekazane do f zostaną przekazane do g".