global keyword python

37

# When we create a variable inside a fxn, it is local by default.
# When we define a variable outside of a fxn, it is global by default. You don't have to use global keyword.
# We use global keyword to read and write a global variable inside a function.
# Use of global keyword outside a function has no effect.

#can access a global variable inside a fxn... but cannot modify it (see next)
c = 1 # global variable
def add():
    print(c)
add()           #1

# cannot modify a global variable from inside a fxn
c = 1 # global variable
def add():
    c = c + 2 # increment c by 2
    print(c)
add()       #UnboundLocalError: local variable 'c' referenced before assignment

# declare global keyword, allows fxn to modify global variable
c = 0 # global variable
def add():
    global c
    c = c + 2 # increment by 2
    print("Inside add():", c)
add()
print("In main:", c)
# Inside add(): 2
# In main: 2

# Global in nested function 
# Declared a global variable inside the nested function bar(). 
# Inside foo() function, x has no effect of the global keyword.
# Before and after calling bar(), the variable x takes the value of local variable i.e x = 20
# Outside of the foo() fxn, the variable x will take value defined in the bar() fxn i.e x = 25
def foo():
    x = 20

    def bar():
        global x
        x = 25
    
    print("Before calling bar: ", x)
    print("Calling bar now")
    bar()
    print("After calling bar: ", x)

foo()
print("x in main: ", x)

# Before calling bar:  20
# Calling bar now
# After calling bar:  20
# x in main:  25

# declare global variable in local scope
artist = "Michael Jackson"

def printer(artist): 
    global internal_var                     #declare global variable within fxn
    internal_var= "Whitney Houston"
    print(artist,"is an artist")

printer(artist) 
printer(internal_var)

# Michael Jackson is an artist
# Whitney Houston is an artist

Comments

Submit
0 Comments