2016-10-21 2 views
-1

Я создал функцию grid(n) на Python (используя networkx), которая возвращает простой граф с «n» узлами. Теперь я пытаюсь создать еще одну функцию, называемую «edge». Я хочу, чтобы «edge» принимал grid(n) в качестве аргумента, и я хочу использовать «n» (в grid (n)) в теле функции edge. Это возможно?Выполнение функции переменная другого

Я пробовал:

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

Но это дает мне недопустимую синтаксическую ошибку?

Любая помощь будет высоко ценится,

Джек

+0

было моим объяснением полезным? – Shasha99

ответ

1

не представляется возможным !!!

При определении метода будут указаны только имена параметров (а не значения). Таким образом, типичное определение метода было бы как:

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

Обратите внимание, что вы всегда можете упомянуть значения по умолчанию для параметров.

Когда вы пишете: def edge(grid(n)):, метод grid (n) выполнит сначала, а затем он вернет некоторый объект, но вы должны указывать имена параметров при определении метода.

Alternate:

Вы можете определить метод края, как это:

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

В приведенном выше коде, вы передаете метод сетки в качестве первого аргумента, а затем п в качестве второго аргумента. Вы всегда можете вызвать метод grid внутри метода edge, как показано.

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) 

отправить функцию в качестве аргумента другой функции. Мне непонятно, из вашего вопроса, если это делает то, что вы хотите сделать.

+0

Спасибо за вашу помощь - это очищает вещи. – Jack

1

При определении функции следует указать только параметр:

def edge(graph): 
    pass 

и при вызове функции, вы проедете параметр в него:

edge(grid(n)) 

или вы могли бы написать функцию края, что зависит от параметра «n»:

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

Спасибо за ваш ответ. – Jack

0

Поскольку вы хотите использовать значение n как для функции, вы можете попробовать, как это:

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

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

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

main() 
Смежные вопросы