使函数成为另一个函数的变量

时间:2016-10-21 21:58:08

标签: python graph networkx

我在Python上创建了一个函数grid(n)(使用networkx),它返回一个带有" n"的简单图形。节点。我现在正在尝试创建另一个名为" edge"的函数。我想要" edge"接受grid(n)作为论据,我想利用" n" (在grid(n)中)在edge函数体中。这可能吗?

我试过了:

def edge(grid(n)):
"function body"

但是它给了我一个无效的语法错误?

非常感谢任何帮助,

杰克

4 个答案:

答案 0 :(得分:2)

如果您致电edge(grid(n)),则会edge调用grid(n)。什么是grid(n)?显然,它是一个带有n个节点的简单图形。所以它会像你做的那样做出回应

G = grid(n)
edge(G)

您可以执行

之类的操作
def edge(fxn, argument):
    G = fxn(argument)
    print G.edges()[0]
edge(grid,n)

将函数作为参数发送给另一个函数。我不清楚你的问题是否符合你想做的事情。

答案 1 :(得分:1)

定义函数时,您应该只指定参数:

def edge(graph):
    pass

当你调用函数时,你将参数传递给它:

edge(grid(n))

或者你可以编写依赖于" n"的边缘函数。参数:

def edge(n):
    graph = grid(n)
    #using graph variable

答案 2 :(得分:1)

不可能!!!

在定义方法时,只会提到参数名称(而不是值)。因此,典型的方法定义如下:

def fun(param1,param2,...):

请注意,您始终可以提及参数的默认值。

当您编写:def edge(grid(n)):时,grid(n)方法将首先执行,然后它将返回一些对象,但您应该在定义方法时提供参数名称。

替代:

您可以像这样定义边缘方法:

def edge(grid,n):
   g = grid(n)
   #do rest of the stuff here !!!!

在上面的代码中,您将传递grid方法作为第一个参数,然后将n作为第二个参数。你总是可以在边缘方法中调用grid方法,如图所示。

答案 3 :(得分:0)

由于您希望对这两个函数使用值n,您可以尝试这样:

def grid(n):
    """
    Function Body
    """

def edge(n):
    """
    Function Body
    """

def main():
    n = 2
    grid(n)
    edge(n)

main()