From python doc and stackoverflow, I understand how to use the **kwargs in my def function. However, I have a case need two sets of **kwargs for two sub functions. Can someone show me how to separate the **kwargs properly? Here is my goal: to plot set of points and interpolated smooth curve, and my naive sample code: def smoothy(x,y, kind='cubic', order = 3, **kwargs_for_scatter, **kwargs_for_plot): yn_cor = interp1d(x, y, kind=kind, assume_sorted = False) xn = np.linspace(np.min(x), np.max(x), len(x) * order) plt.scatter(x,y, **kwargs_for_scatter) plt.plot(xn, yn_cor(xn), **kwargs_for_plot); return Thanks for help. Continue reading...