На самом деле заголовок не совсем отражает тот вопрос, который я хочу задать. Моя цель такова :Я пишу некоторые функции построения графиков, используя matplotlib. У меня есть ряд функций, которые предназначены для разных целей построения графика. как линия _график ()для линий, столбец _график ()для столбца и т. д. например:
import matplotlib.pyplot as plt
def line_plot(axes=None,x=None,y=None):
if axes==None:
fig=plt.figure()
axes=fig.add_subplot(111)
else:
pass
axes.plot(x,y)
def bar_plot(axes=None,x=None,y=None):
if axes==None:
fig=plt.figure()
axes=fig.add_subplot(111)
else:
pass
axes.bar(left=x,height=y)
Но проблема в том, что для каждой определенной функции мне приходится повторять эту часть кода:
if axes==None:
fig=plt.figure()
axes=fig.add_subplot(111)
else:
pass
Есть ли способ использовать декоратор, который я могу применить перед определением функции построения графика, который будет автоматически выполнять повторяющуюся часть кода? Таким образом, мне не нужно повторять их каждый раз.
один из возможных вариантов — определить такую функцию:
def check_axes(axes):
if axes==None:
fig=plt.figure()
axes=fig.add_subplot(111)
return axes
else:
return axes
Тогда примеры будут как:
import matplotlib.pyplot as plt
def line_plot(axes=None,x=None,y=None):
axes=check_axes(axes)
axes.plot(x,y)
def bar_plot(axes=None,x=None,y=None):
axes=check_axes(axes)
axes.bar(left=x,height=y)
Но есть ли лучший/чистый/более питонический способ? Я думаю, я могу использовать декоратор, но не понял.может ли кто-нибудь дать некоторое представление?
Спасибо!!