Aufruf definierte variable innerhalb einer Funktion aus einer anderen Funktion
wenn ich diese habe:
def oneFunction(lists):
category=random.choice(list(lists.keys()))
word=random.choice(lists[category])
def anotherFunction():
for letter in word: #problem is here
print("_",end=" ")
Habe ich vorher definiert lists
, so oneFunction(lists)
funktioniert perfekt.
Mein problem ist der Aufruf word
in Zeile 6. Ich habe versucht, zu definieren word
außerhalb der ersten Funktion mit der gleichen word=random.choice(lists[category])
definition, aber das macht word
immer das gleiche, auch wenn ich den Anruf oneFunction(lists)
.
Ich möchte in der Lage sein, jedes mal ich rufen Sie die erste Funktion und die zweite, eine andere word
.
Kann ich dies tun, ohne die Festlegung, dass word
außerhalb der oneFunction(lists)
?
Warum nicht pass
word
als argument zu anotherFunction
? Betrachten def anotherFunction(word):
und den Aufruf entsprechend.InformationsquelleAutor JNat | 2012-04-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, Sie sollten denken zu definieren, die sowohl Ihre Funktion in einer Klasse, und macht word ein Mitglied. Dieser Reiniger ist
Sobald Sie eine Klasse zu Instanziieren, um ein Objekt und den Zugriff auf die member-Funktionen.
Ein anderer Ansatz wäre, zu machen
oneFunction
Gegenzug, das Wort, so dass Sie verwenden könnenoneFunction
anstelle von word inanotherFunction
Werden und schließlich können auch
anotherFunction
akzeptieren Wort als parameter, die Sie übergeben können, aus der das Ergebnis des AufrufsoneFunction
self
Teil? Ist es ein argument für die Funktion?gibt dir die Referenz auf das aktuelle Objekt, so wie das, was
this
(Zeiger) oderthis
(variable) dient in bemerkenswerter OOP-Sprachen.python sagt mir
self
ist nicht definiert... warum ist das so? brauche ich zum importieren einiger module vor, oder was?Sie haben, um eine Klasse, die gleiche Art, wie ich zeigte, in dem Beispiel. Ich denke, Sie sind nicht zufrieden mit OO also ich update meine Antwort, um weitere details hinzuzufügen.
Ich habe eine Klasse definieren mit den zwei Funktionen innerhalb der it, sondern beim Aufruf der ersten Funktion (
Spam.oneFunction(self,lists)
) sagt er mirself
ist nicht definiert...InformationsquelleAutor Abhijit
Alles in python ist als Objekt so Funktionen sind auch Objekte. So können Sie diese Methode verwenden, wie gut.
InformationsquelleAutor Python Learner
Die einfachste option ist die Verwendung einer globalen variable.
Dann erstellen Sie eine Funktion, bekommt das aktuelle Wort.
Dies hat den Vorteil, dass vielleicht Ihre Funktionen sind in verschiedene Module und Zugriff auf die variable.
InformationsquelleAutor 0n10n_
InformationsquelleAutor Allan Mwesigwa