Это ожидаемое поведение. Matplotlib не будет принимать неизвестные аргументы ключевых слов. Если сделать my_fake_kwarg
явным аргументом ключевого слова, это не исправит ситуацию. С
def valid_mpl(my_fake_kwarg=None, **kwargs):
do_something_with(my_fake_kwarg)
fig, ax = plt.subplots()
ax.plot([1,2,3], [-3, -2, -1], **kwargs)
return fig, ax
valid_mpl(my_fake_kwarg=True)
по-прежнему приводит к kwargs = {'my_fake_kwarg': True}
.
Вы можете удалить его из kwargs
после того, как с ним покончено.
def valid_mpl(**kwargs):
fig, ax = plt.subplots()
if 'my_fake_kwarg' in kwargs:
del kwargs['my_fake_kwarg']
ax.plot([1,2,3], [-3, -2, -1], **kwargs)
return fig, ax
Или создайте новый словарь для распаковки в ax.plot
.
def valid_mpl(**kwargs):
fig, ax = plt.subplots()
fake_kwargs = ['my_fake_kwarg']
plot_kwargs = {k: v for k, v in kwargs.items() if k not in fake_kwargs}
ax.plot([1,2,3], [-3, -2, -1], **plot_kwargs)
return fig, ax