我在Python上创建了一个函数grid(n)
(使用networkx),它返回一个带有" n"的简单图形。节点。我现在正在尝试创建另一个名为" edge"的函数。我想要" edge"接受grid(n)
作为论据,我想利用" n" (在grid(n)中)在edge函数体中。这可能吗?
我试过了:
def edge(grid(n)):
"function body"
但是它给了我一个无效的语法错误?
非常感谢任何帮助,
杰克
答案 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()