首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用动态数量的参数调整该方法

使用动态数量的参数调整该方法
EN

Stack Overflow用户
提问于 2012-12-18 05:07:03
回答 2查看 100关注 0票数 0

我正在使用sage和一个用python编写的脚本打印不同的图形。我正在尝试编写一个通用代码,它允许我打印所有的图形。例如,我有:

代码语言:javascript
复制
g1 = graphs.BarbellGraph(9, 4) 
g2 = graphs.RandomNewmanWattsStrogatz(12, 2, .3)

该图取决于我的参数的数量和类型,我必须调整我的代码以使其适用于不同的情况。

我的代码:

代码语言:javascript
复制
registry = {"graphs": graphs, "digraphs":digraphs}
methodtocall = getattr(registry["graphs"], "BarbellGraph")
result = methodtocall(2,3)
print(result)

使用下面的代码,我得到的结果是

代码语言:javascript
复制
graphs.BarbellGraph(2, 3) 

我的问题是my to want在上面的代码中接受两个参数,我想根据所选图形的参数数量来更改它。如何更改代码以使其为参数动态?

如果我有N个参数,我想要

代码语言:javascript
复制
result = methodtocall(param1, ... ,paramN)

提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-18 05:23:12

我认为您正在寻找star-operator (也称为"splat“或"unpacking”运算符):

代码语言:javascript
复制
result = methodtocall(*[param1, ... ,paramN])
票数 0
EN

Stack Overflow用户

发布于 2012-12-18 05:26:19

如果你把参数放在一个列表中,你可以像下面这样调用一个函数;

代码语言:javascript
复制
graphs.RandomNewmanWattsStrogatz(*parameter_list)

它会将列表扩展为位置参数。

如果你正在编写一个需要接受位置参数的函数,你可以以类似的方式接受任意数量的参数;

代码语言:javascript
复制
def my_function(*args):
    assert(type(args) == tuple)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13922200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档