#python #graph #networkx
#python #График #networkx
Вопрос:
Я создал функцию grid(n)
на Python (используя networkx), которая возвращает простой график с «n» узлами. Сейчас я пытаюсь создать другую функцию под названием «edge». Я хочу, чтобы «edge» принимался grid(n)
в качестве аргумента, и я хочу использовать «n» (в grid (n)) в теле функции edge. Возможно ли это?
Я пытался:
def edge(grid(n)):
"function body"
Но это выдает мне недопустимую синтаксическую ошибку?
Любая помощь была бы высоко оценена,
Джек
Комментарии:
1. было ли мое объяснение полезным?
Ответ №1:
Если вы вызываете 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)
отправить функцию в качестве аргумента другой функции. Из вашего вопроса мне не ясно, делает ли это то, что вы хотите сделать.
Ответ №2:
Невозможно!!!
при определении метода будут указаны только имена параметров (не значения). Таким образом, типичное определение метода было бы похоже:
def fun(param1,param2,...):
Обратите внимание, что вы всегда можете указать значения по умолчанию для параметров.
когда вы пишете: def edge(grid(n)):
, сначала будет выполняться метод grid (n), а затем он вернет некоторый объект, но вы должны указать имена параметров при определении метода.
Альтернативный:
Вы можете определить метод edge следующим образом:
def edge(grid,n):
g = grid(n)
#do rest of the stuff here !!!!
В приведенном выше коде вы передаете метод grid в качестве первого аргумента, а затем n в качестве второго аргумента. Вы всегда можете вызвать метод grid внутри метода edge, как показано.
Ответ №3:
Когда вы определяете функцию, вы должны указать только параметр:
def edge(graph):
pass
и когда вы вызываете функцию, вы передаете в нее параметр:
edge(grid(n))
или вы могли бы написать граничную функцию, которая зависит от параметра «n»:
def edge(n):
graph = grid(n)
#using graph variable
Комментарии:
1. Спасибо за ваш ответ.
Ответ №4:
Поскольку вы хотите использовать значение n
для обеих функций, вы можете попробовать следующим образом :
def grid(n):
"""
Function Body
"""
def edge(n):
"""
Function Body
"""
def main():
n = 2
grid(n)
edge(n)
main()