实际上标题并不能完全反映我想问的问题。我的目的是这样的:我正在使用 matplotlib 编写一些绘图函数。我有一系列用于不同绘图目的的功能。比如 line_plot() 用于线条, bar_plot() 用于条形等,例如:
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)
但是有更好/干净/更蟒蛇的方式吗?我想我可以使用装饰器,但没有弄清楚。有人可以给出一些想法吗?
谢谢!!