Variablen in einer Funktionspython deklarieren


Gullivers Brandung

Aus irgendeinem Grund wird in meinem Code immer wieder die Fehlermeldung angezeigt, dass meine Variablen nicht deklariert wurden. Dies geschieht nur, wenn ich versuche, sie in einer Funktion und nicht außerhalb zu deklarieren.

Beispiel

x, y = 105,107 
print (x,y) 

Die obige Codezeile funktioniert und gibt mir die Ausgabe 105 107

aber wenn ich das unten mache

def fun1():
  x, y = 105,107 
print (x,y) 

Ich erhalte NameError: Name 'x' ist nicht definiert

brauche Hilfe, um zu verstehen, was passiert.

jsbueno

Eines der Hauptdienstprogramme von Funktionen ist genau die Art und Weise, wie sie es ermöglichen, Variablen zu isolieren - keine Sorge, dass Namen für den Code in verschiedenen Funktionen zusammenstoßen - sobald eine Funktion ordnungsgemäß funktioniert, wird sie ausgeführt.

Aber wenn man Bedürfnisse Variablen belichten , dass innerhalb von Funktionen zur Außenwelt bevölkerte, ist es möglich , mit dem Stichwort „global“. Beachten Sie, dass dies im Allgemeinen als schlechte Praxis angesehen wird und selbst für kleine Skripte häufig bessere Lösungen angeboten werden. Aber gesunder Menschenverstand sollte immer die Regel sein:

def fun1():
   global x, y
   x, y = 105, 107

fun1()
print(x, y)

Beachten Sie, dass Ihr Code eine andere falsche Annahme hatte: Code in Funktionskörpern wird nur ausgeführt, wenn die Funktion aufgerufen wird. Selbst wenn Sie in dem Beispiel in Ihrer Frage die Variablen als global deklariert printhätten , würde der Aufruf dennoch denselben Fehler auslösen. da Sie die Zeile, die diese Variablen definiert, nicht durch Aufrufen der Funktion ausführen.

Jetzt haben Sie etwas über "Globale" gelernt - der nächste Schritt ist, zu vergessen, dass es existiert, und zu lernen, wie man mit Variablen arbeitet, die ordnungsgemäß in Funktionen eingekapselt sind. Wenn Sie ein mittleres / fortgeschrittenes Niveau erreichen, können Sie beurteilen, wann "Globale" "könnte tatsächlich mehr Gutes als Schaden anrichten (was fast nie der Fall ist).

Verwandte Artikel


Verweisen Sie auf Variablen außerhalb einer Funktionspython

sinha-shaurya Ich schreibe eine Python-Funktion, um die Summe aller Knoten in einem binären Baum zu finden, indem Sie einfach Inorder Traversal verwenden, etwa so: sum=0 def tree_sum(root): if root!=None: tree_sum(root.left) sum=sum+root.da

Deklarieren einer nutzlosen lokalen Variablen

Mike : Das ist also seltsam, ich weiß, dass der Code selbst ziemlich nutzlos ist, aber was ich mich frage, warum ich den Fehler bekomme: Ich schrieb einen Code, ich hatte diesen geschrieben: if(scan.hasNextInt()) int row = scan.nextInt(); Ich habe damals

zweimaliges Deklarieren einer Variablen in IIFE

Hamza Mohamed: Ich habe dieses lustige Quiz im Internet durchlaufen. console.log((function(x, f = (() => x)){ var x; var y = x; x = 2; return [x, y, f()] })(1)) und die Entscheidungen waren: [2,1,1] [2, undefiniert, 1] [2, 1, 2] [2, undefiniert, 2] Ic

NoSuchMethodError beim Deklarieren einer Variablen

Tolgap Bei der Verwendung von Spark und Scala tritt ein seltsamer Fehler auf. Ich habe einen Code, der eine Variable deklariert: var offset = 0 Dies verursacht die folgende Ausnahme: java.lang.NoSuchMethodError: scala.runtime.IntRef.create(I)Lscala/runtime/In

Deklarieren einer Datetime-Variablen

Kaffeezeit Ich habe mich gefragt, ob ich ein StartDate und ein EndDate aus einer Datenbanktabelle abrufen könnte, anstatt die Parameter StartDate und EndDate wie unten gezeigt zuzuweisen? Ich habe die Daten schon in einer anderen Tabelle. Ich muss die Daten zw

Variablen innerhalb einer Funktion deklarieren

Brise Reichtum int function(int a, int b){ a = a*b; return(a); } Dies ist eine wirklich dumme Fragen , aber, wenn ich passieren in 4 und 2. Warum tut die eine Notwendigkeit erklärt werden? Samuel Dominguez int function(int a, int b){ // two variables,

Deklarieren oder Initialisieren einer Variablen?

user3247128 Ich bin gespannt auf den Unterschied zwischen dem Deklarieren einer Variablen und dem Initialisieren einer Variablen. z.B var example; // this is declaring var example = "hi" // initializing? Or just "adding a value"? Ich glaube nicht, dass ich g

Verwenden einer Liste in einer Funktionspython

Lord Heffe file = open('Info.txt', 'r') x = str(file.read()) file.close() info = re.findall(r'\w+', x) j = len(info) Fname = [0] * j def FirstName(info, j, FName): i = 0 n = 0 while i<j: name = info[i] name = name.upper()