2016-10-21 4 views
-1

Ich habe eine Funktion grid(n) auf Python (mit networkx) erstellt, die einen einfachen Graphen mit "n" Knoten zurückgibt. Ich versuche jetzt, eine andere Funktion namens "Kante" zu erstellen. Ich will "Rand", um grid(n) als ein Argument zu akzeptieren, und ich möchte das "n" (im Raster (n)) im Körper der Kantenfunktion verwenden. Ist das möglich?Erstellen einer Funktion die Variable eines anderen

Ich habe versucht:

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

Aber es ist mir einen ungültigen Syntaxfehler zu geben?

Jede Hilfe sehr geschätzt, wenn Sie mit grid(n)edgeedge(grid(n)), rufen Sie dann genannt

Jack

+0

war meine Erklärung hilfreich? – Shasha99

Antwort

1

Nicht möglich !!!

Bei der Definition einer Methode werden nur die Parameternamen (nicht die Werte) erwähnt. So eine typische Methode Definition wäre wie:

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

Beachten Sie, dass Sie immer die Standardwerte für die Parameter erwähnen können.

, wenn Sie schreiben: def edge(grid(n)):, Gitter (n) Methode wird zuerst ausführen und dann wird es einige Objekt zurückgeben, aber sie sollen die Parameternamen zur Verfügung zu stellen, während das Verfahren zu definieren.

Alternate:

Sie können die Kanten Methode wie folgt definieren:

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

In dem obigen Code Sie Gitterverfahren als erstes Argument sind vorbei und dann n als zweites Argument. Sie können die Grid-Methode immer innerhalb der Kantenmethode wie gezeigt aufrufen.

2

werden würde. Was ist grid(n)? Anscheinend ist es ein einfacher Graph mit n Knoten. So wird es mit dem gleichen reagieren, als ob Sie

tat
G = grid(n) 
edge(G) 

Sie können Dinge wie

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

eine Funktion als Argument an eine andere Funktion zu senden. Es ist mir nicht klar aus deiner Frage, ob das das ist, was du tun willst.

+0

Danke für Ihre Hilfe - es macht alles klar. – Jack

1

Wenn Sie eine Funktion definieren, sollten Sie nur Parameter angeben:

def edge(graph): 
    pass 

und wenn Sie Funktion aufrufen, werden Sie Parameter in es passieren:

edge(grid(n)) 

oder man könnte Rand Funktion schreiben, die ist abhängig von "n" Parameter:

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

Danke für Ihre Antwort. – Jack

0

Da Sieverwenden Wert wollenfür beide Funktion können Sie wie folgt versuchen:

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

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

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

main() 
Verwandte Themen