Aufruf der Variablen innerhalb einer Funktion aus einer anderen Funktion

Wenn ich das 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=" ") 

Ich habe zuvor lists definiert, so dass oneFunction(lists) perfekt funktioniert.

Mein Problem ist das word in Zeile 6. Ich habe versucht, word außerhalb der ersten Funktion mit demselben word=random.choice(lists[category]) Definition zu definieren, aber das macht das word immer das Gleiche, auch wenn ich oneFunction(lists) .

Ich möchte in der Lage sein, jedes Mal, wenn ich die erste Funktion nenne und dann die zweite, ein anderes word .

Kann ich das tun, ohne dieses word außerhalb der oneFunction(lists) ?

3 Solutions collect form web for “Aufruf der Variablen innerhalb einer Funktion aus einer anderen Funktion”

Ja, du solltest daran denken, deine Funktion in einer Klasse zu definieren und ein Mitglied zu machen. Das ist sauberer

 class Spam: def oneFunction(self,lists): category=random.choice(list(lists.keys())) self.word=random.choice(lists[category]) def anotherFunction(self): for letter in self.word: print("_",end=" ") 

Sobald du eine Klasse machst, musst du es einem Objekt zugänglich machen und auf die Mitgliederfunktionen zugreifen.

 s = Spam() s.oneFunction(lists) s.anotherFunction() 

Ein anderer Ansatz wäre, um oneFunction zurückzugeben das Wort, so dass Sie oneFunction anstelle von Wort in anotherFunction

 >>> def oneFunction(lists): category=random.choice(list(lists.keys())) return random.choice(lists[category]) >>> def anotherFunction(): for letter in oneFunction(lists): print("_",end=" ") 

Und schließlich können Sie auch eine anotherFunction machen, akzeptieren Sie das Wort als einen Parameter, den Sie aus dem Ergebnis des Aufrufs von oneFunction

 >>> def anotherFunction(words): for letter in words: print("_",end=" ") >>> anotherFunction(oneFunction(lists)) 
 def anotherFunction(word): for letter in word: print("_", end=" ") def oneFunction(lists): category = random.choice(list(lists.keys())) word = random.choice(lists[category]) return anotherFunction(word) 

Die einfachste Option ist, eine globale Variable zu verwenden. Dann erstellen Sie eine Funktion, die das aktuelle Wort bekommt.

 current_word = '' def oneFunction(lists): global current_word word=random.choice(lists[category]) current_word = word def anotherFunction(): for letter in get_word(): print("_",end=" ") def get_word(): return current_word 

Der Vorteil davon ist, dass Ihre Funktionen in verschiedenen Modulen sind und auf die Variable zugreifen müssen.

  • Zugriff auf eine innerhalb einer Funktion definierte Variable von außerhalb dieser Funktion
  • Timly.timeit variablen importieren in python
  • Weisen Sie einer Variablen in einer Funktion in Python 2.7 eine Druckanweisung zu
  • Wie kann ich vorhandene Variablen und deren Werte als Parameter für eine Funktion (Python) verwenden?
  • So greifen Sie auf die Variablen zu, die in Funktionen in python deklariert sind
  • Python variabler methodenname
  • Python: Funktion und Variable mit gleichem Namen
  • Python-Funktionen: Globale Variablen übergeben, wenn man nur auf sie zugreift?
  • Pythonfreie Variablen.Warum scheitert das?
  • Python ist die beste Programmiersprache der Welt.