我正在使用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) 我的问题是my to want在上面的代码中接受两个参数,我想根据所选图形的参数数量来更改它。如何更改代码以使其为参数动态?
如果我有N个参数,我想要
result = methodtocall(param1, ... ,paramN)提前感谢
发布于 2012-12-18 05:23:12
我认为您正在寻找star-operator (也称为"splat“或"unpacking”运算符):
result = methodtocall(*[param1, ... ,paramN])发布于 2012-12-18 05:26:19
如果你把参数放在一个列表中,你可以像下面这样调用一个函数;
graphs.RandomNewmanWattsStrogatz(*parameter_list)它会将列表扩展为位置参数。
如果你正在编写一个需要接受位置参数的函数,你可以以类似的方式接受任意数量的参数;
def my_function(*args):
assert(type(args) == tuple)https://stackoverflow.com/questions/13922200
复制相似问题