С функцией f
, вызывающей другую известную функцию в Python (например, функцию matplotlib
), каков наиболее питонический/эффективный/элегантный способ определить некоторые значения по умолчанию, при этом предоставляя пользователю f
возможность полностью настроить вызываемую функцию. (обычно с **kwargs
), в том числе для перезаписи аргументов ключевого слова по умолчанию, определенных в f
?
import numpy as np
import matplotlib.pyplot as plt
v = np.linspace(-10.,10.,100)
x,y = np.meshgrid(v, v)
z = -np.hypot(x, y)
def f(ax, n=12, **kwargs):
ax.contourf(x, y, z, n, cmap=plt.cm.autumn, **kwargs)
fig, ((ax0, ax1), (ax2, ax3)) = plt.subplots(2, 2)
f(ax0) # OK
f(ax1, n=100) # OK
f(ax2, n=100, **{'vmax': -2, 'alpha': 0.2}) # OK
# f(ax3, n=100, **{'cmap': plt.cm.cool}) # ERROR
plt.show()
Здесь последний вызов f
выдает:
Ошибка типа: контурф() получил несколько значений для аргумента ключевого слова 'cmap'