代码之家  ›  专栏  ›  技术社区  ›  user6429576

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

  •  -1
  • user6429576  · 技术社区  · 9 年前

    我已经创建了一个函数 grid(n) 在Python上(使用networkx),它返回一个包含“n”个节点的简单图。我现在正在尝试创建另一个名为“edge”的函数。我希望“边缘”接受 作为一个参数,我想使用边函数体中的“n”(在网格(n)中)。这可能吗?

    我试过:

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

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

    将非常感谢任何帮助,

    杰克

    4 回复  |  直到 9 年前
        1
  •  1
  •   Joel    9 年前

    如果你打电话 edge(grid(n)) edge 将被称为 grid(n) .什么是 n 节点。因此,它的响应与您的响应相同

    G = grid(n)
    edge(G)
    

    def edge(fxn, argument):
        G = fxn(argument)
        print G.edges()[0]
    edge(grid,n)
    

    将一个函数作为参数发送给另一个函数。从你的问题中我不清楚这是否是你想要做的。

        2
  •  0
  •   Shasha99    9 年前

    这是不可能的!!!

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

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

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

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

    备选方案:

    可以这样定义边方法:

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

    在上面的代码中,您将网格方法作为第一个参数传递,然后n作为第二个参数传递。始终可以在边方法中调用网格方法,如图所示。

        3
  •  0
  •   Aleks Lee    9 年前

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

    def edge(graph):
        pass
    

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

    edge(grid(n))
    

    def edge(n):
        graph = grid(n)
        #using graph variable
    
        4
  •  0
  •   Dinesh Pundkar    9 年前

    因为您想要使用值 n

    def grid(n):
        """
        Function Body
        """
    
    def edge(n):
        """
        Function Body
        """
    
    def main():
        n = 2
        grid(n)
        edge(n)
    
    main()