我正在使用sage使用python编写的脚本打印不同的图形。我正在尝试编写一个允许我打印所有图形的通用代码。例如,我有:
g1 = graphs.BarbellGraph(9, 4)
g2 = graphs.RandomNewmanWattsStrogatz(12, 2, .3)
图表取决于我的参数的数量和类型,我必须调整我的代码,以使其适用于不同的情况。
我的代码:
registry = {"graphs": graphs, "digraphs":digraphs}
methodtocall = getattr(registry["graphs"], "BarbellGraph")
result = methodtocall(2,3)
print(result)
使用此代码我得到结果
graphs.BarbellGraph(2, 3)
我的问题是methodtocall接受上面代码中的2个参数,我想根据所选图形的参数数量来改变它。 如何更改代码以使其为参数动态化?
如果我有N个参数我想要
result = methodtocall(param1, ... ,paramN)
提前致谢
答案 0 :(得分:0)
我认为您正在寻找star-operator(又名“splat”或“解包”运算符):
result = methodtocall(*[param1, ... ,paramN])
答案 1 :(得分:0)
如果将参数放在列表中,则可以按如下方式调用函数;
graphs.RandomNewmanWattsStrogatz(*parameter_list)
将把列表扩展为位置参数。
如果你正在编写一个需要取位置参数的函数,你可以用类似的方式接受任意数量的参数;
def my_function(*args):
assert(type(args) == tuple)