所以最近我正在使用matplotlib,这是我的代码
import matplotlib.pyplot as plt
plt.plot([1,2,3] ,[2,4,6], label="line")
plt.xlabel("x")
plt.ylabel("y")
plt.title("Interesting graph")
plt.legend()
plt.show()
现在,因为我不得不写这份 plt。。我觉得每一次都是多余的
所以我的问题有什么办法,只有一次我必须编写plt时,我只要编写方法名称就可以调用所有方法
这是我想要在python中使用的东西的一个例子
with plt :
plot([1,2,3] ,[2,4,6], label="line")
xlabel("x")
ylabel("y")
title("Interesting graph")
legend()
plt.show()
答案 0 :(得分:0)
我同意上面的评论,但是如果由于某些原因您确实需要/想要一种方法来描述,可以使用OrderedDict
来保留要调用的每个函数的顺序。并将这些值用作参数,然后使用getattr
动态地进行函数调用。
当您有关键字参数时,它会变得有点混乱,但是如果您确实需要它,这是一个很棘手的答案。希望对您有帮助!
import matplotlib.pyplot as plt
from collections import OrderedDict
def call_these_funcs_with_args(mod,ordered_funcs_and_args):
"""
calls the functions provided as keys with the values provided as arguments
for the module provided
"""
for attr,args in attrs_and_args.iteritems():
if attr in dir(mod):
args = attrs_and_args[attr]
if isinstance(args,list):
getattr(mod,attr)(*args)
elif args:
getattr(mod,attr)(args)
else:
getattr(mod,attr)()
if "{}_kwargs".format(attr) in attrs_and_args.keys() and isinstance(args,list):
kwargs = attrs_and_args["{}_kwargs".format(attr)]
getattr(mod,attr)(*args,**kwargs)
attrs_and_args = OrderedDict(
{'plot':[[1,2,3],[2,4,6]],
'plot_kwargs': {'label':'line'},
'xlabel':"x",
'ylabel':"y",
'title':"Interesting Graph",
'legend':None}
)
call_these_funcs_with_args(plt,attrs_and_args)
plt.show()
答案 1 :(得分:0)
替代方法是使用没有这种缺点的方法链接(或“返回自身”)。但是这种方法仅适用于方法调用。