使函数成为另一个变量

2024-04-26 23:58:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Python上创建了一个函数grid(n)(使用networkx),它返回一个带有“n”节点的简单图。我现在正在尝试创建另一个名为“edge”的函数。我希望“edge”接受grid(n)作为参数,并希望使用edge函数体中的“n”(在grid(n)中)。这可能吗?你知道吗

我试过:

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

但它给了我一个无效的语法错误?你知道吗

任何帮助都将不胜感激

杰克


Tags: 函数networkx参数节点deffunctionbodygrid
3条回答

定义函数时,应仅指定参数:

def edge(graph):
    pass

调用函数时,将向其中传递参数:

edge(grid(n))

或者可以编写依赖于“n”参数的边函数:

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

不可能!!!

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

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 method inside edge方法。你知道吗

如果调用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)

将一个函数作为参数发送给另一个函数。从你的问题我不清楚这是否符合你的意愿。你知道吗

相关问题 更多 >