2012-04-06 11 views
0

Wie würde ich den Inhalt von r von main in zwei speichern und übergeben? Es wird r drucken, wenn ich es r = etwas fest gemacht habe, aber wie übergebe und halte ich variable Inhalte in r. Ich versuchte random.getstate/setstate, aber es sagte "Funktionsobjekt nicht einklagbar".python 3.2 wie Daten in Variablen zwischen Funktionen übergeben werden

import random 
from random import randrange 

def main(): 
    r = random.randrange(1,13,1) 
    print (r) 

r = random.randrange(1,13,1) 


def two(): 
    if r==7 or r==11: 
     print (r) 
    else: 
     print (r) 

    main() 
    two() 
+0

Wie haben Sie von 'random.getstate' erfahren? Das ist völlig unabhängig. Die Art und Weise, wie Sie Informationen zwischen Funktionen übergeben, ist egal, was die Funktionen tun, und völlig unabhängig von der Tatsache, dass Sie das 'random'-Modul verwenden, also verstehe ich nicht, warum Sie dort herum gucken gehen etwas, das helfen könnte. Dies sind Programmiergrundlagen, die Sie zuerst lernen sollten, bevor Sie versuchen, mit dem Code anderer zu arbeiten (durch Importieren von Modulen). Ja, das bedeutet, zuerst extrem begrenzte Dinge zu schreiben. –

+0

@KarlKnechtel Ich habe diesen Code selbst geschrieben, und ich nehme gerade eine Python-Programmierklasse, also schätze ich die Annahme, dass ich den Code von jemand anderem genommen habe, wirklich nicht, wenn ich in den Python-Dokumenten nachschaue. Das nächste Mal, denken Sie nach, bevor Sie davon ausgehen. Es ist beleidigend. – user1316212

Antwort

1

Nun, je nach Situation, entweder Sie wollen eine Klasse machen oder die Daten zurückgeben, dann als Argument übergibt in der letztere ist wahrscheinlich das, was Sie Ihren Code gegeben wollen, so zum Beispiel:

def main(): 
    ... 
    r = do_something() 
    ... 
    return r 

def two(r): 
    ... 
    do_something_else(r) 
    ... 

r = main() 
two(r) 

Wenn dies in etwas passiert Sie als Einheit definieren könnte, könnte man es in einer Klasse tun:

class Main(): 
    def main(self): 
    ... 
    self.r = do_something() 
    ... 

    def two(self): 
    ... 
    do_something_else(self.r) 
    ... 

main = Main() 
main.main() 
main.two() 

jedoch in diesem Fall dies nicht erforderlich ist, wie Sie ac schaffen Mädchen, das nichts wirklich einkapselt.

+0

Danke für die Hilfe und den Kommentar zu den Klassen! – user1316212

+0

Keine Sorge, wenn dies Ihre Frage beantwortet, zögern Sie nicht [akzeptieren] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235). –

2

Verwenden Rückgabewerte und Funktionsparameter:

import random 
from random import randrange 

def main(): 
    r = random.randrange(1,13,1) 
    return r 

def two(r): 
    if r==7 or r==11: 
     print (r) 
    else: 
     print (r) 

r = main() 
two(r) 

Die Funktion main berechnet den Zufallswert, und dann kehrt sie zu dem Ort, an dem sie aufgerufen wurde. Sie können den Rückgabewert dann in einer Variablen speichern (auch r genannt in diesem Fall: r = main()). Es muss nicht r genannt werden, aber Sie können es auch etwas anderes nennen.

Um den Wert an two zu übergeben, können Sie es als Parameter übergeben. Wie Sie in def two(r): sehen können, erwartet die Funktion two jetzt einen Parameter (auch r genannt) und wird in dieser Funktion verwendet. Auch dies muss nicht r genannt werden, aber es scheint passend, den gleichen Namen zu verwenden.

+0

@lattyware Danke! Es hat super funktioniert! – user1316212

+0

Und danke für die Erklärung! – user1316212

Verwandte Themen