3964 Stimmen

Verwendung globaler Variablen in einer Funktion

Wie kann ich eine globale Variable in einer Funktion erstellen oder verwenden?

Wenn ich in einer Funktion eine globale Variable erstelle, wie kann ich diese globale Variable in einer anderen Funktion verwenden? Muss ich die globale Variable in einer lokalen Variable der Funktion speichern, die ihren Zugriff benötigt?

0 Stimmen

Unabhängig davon, wo Sie "global" vor dem Variablennamen erwähnt haben, kann sie überall wie eine normale lokale Variable verwendet werden, sobald Python sie als mit dem Schlüsselwort "global" gelesen hat. Aber es ist eine sehr schlechte Idee, es sei denn, die Variable ist für das gesamte Projekt gemeinsam. Zum Beispiel: project_name, database_url

8voto

Mohsen Haddadi Punkte 1148

Es gibt 2 Möglichkeiten, eine Variable als global zu deklarieren:

1. Variable innerhalb von Funktionen zuweisen und globale Zeile verwenden

def declare_a_global_variable():
    global global_variable_1
    global_variable_1 = 1

# Note to use the function to global variables
declare_a_global_variable() 

2. Variable außerhalb von Funktionen zuweisen:

global_variable_2 = 2

Jetzt können wir diese deklarierten globalen Variablen in den anderen Funktionen verwenden:

def declare_a_global_variable():
    global global_variable_1
    global_variable_1 = 1

# Note to use the function to global variables
declare_a_global_variable() 
global_variable_2 = 2

def print_variables():
    print(global_variable_1)
    print(global_variable_2)
print_variables() # prints 1 & 2

Anmerkung 1:

Wenn Sie eine globale Variable innerhalb einer anderen Funktion ändern wollen, wie update_variables() sollten Sie die globale Zeile in dieser Funktion verwenden, bevor Sie die Variable zuweisen:

global_variable_1 = 1
global_variable_2 = 2

def update_variables():
    global global_variable_1
    global_variable_1 = 11
    global_variable_2 = 12 # will update just locally for this function

update_variables()
print(global_variable_1) # prints 11
print(global_variable_2) # prints 2

Anmerkung 2:

Es gibt eine Ausnahme für Anmerkung 1 für Listen- und Wörterbuchvariablen, wenn keine globale Zeile innerhalb einer Funktion verwendet wird:

# declaring some global variables
variable = 'peter'
list_variable_1 = ['a','b']
list_variable_2 = ['c','d']

def update_global_variables():
    """without using global line"""
    variable = 'PETER' # won't update in global scope
    list_variable_1 = ['A','B'] # won't update in global scope
    list_variable_2[0] = 'C' # updated in global scope surprisingly this way
    list_variable_2[1] = 'D' # updated in global scope surprisingly this way

update_global_variables()

print('variable is: %s'%variable) # prints peter
print('list_variable_1 is: %s'%list_variable_1) # prints ['a', 'b']
print('list_variable_2 is: %s'%list_variable_2) # prints ['C', 'D']

6voto

Pavn Punkte 113

Obwohl diese Frage bereits beantwortet wurde, gebe ich die Lösung erneut an, da ich eine einzige Zeile bevorzuge Dies ist, wenn Sie eine globale Variable innerhalb einer Funktion erstellen möchten

def someFunc():
    x=20
    globals()['y']=50
someFunc() # invoking function so that variable Y is created globally 
print(y) # output 50
print(x) #NameError: name 'x' is not defined as x was defined locally within function

2voto

Oscar Nguyen Punkte 43

Wie dieser Code:

myVar = 12

def myFunc():
  myVar += 12

Schlüssel:

Wenn Sie eine Variable außerhalb der Zeichenketten deklarieren, wird sie global.

Wenn Sie eine Variable innerhalb der Zeichenketten deklarieren, wird sie lokal.

Wenn Sie eine globale Variable innerhalb der Strings deklarieren wollen, verwenden Sie das Schlüsselwort global vor der Variablen, die Sie deklarieren wollen:

myVar = 124
def myFunc():
  global myVar2
  myVar2 = 100
myFunc()
print(myVar2)

und dann haben Sie 100 in dem Dokument.

1voto

zeeshan12396 Punkte 195
Initialized = 0  #Here This Initialized is global variable  

def Initialize():
     print("Initialized!")
     Initialized = 1  #This is local variable and assigning 1 to local variable
while Initialized == 0:  

Hier vergleichen wir die globale Variable, die mit 0 initialisiert wurde, so dass die Bedingung der while-Schleife wahr wurde

     Initialize()

Die Funktion wird aufgerufen und die Schleife wird unendlich sein.

#if we do Initialized=1 then loop will terminate  

else:
    print("Lets do something else now!")

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X