cwgt
cwgt

Reputation: 51

global name '...' is not defined

what are the differences in example1, example 2 and example 3. i have tried but got nothing. i think i have missed something or haven't used correctly.

example 1:

def ex1(var1=g_var):
    pass

def ex2():
    global g_var
    g_var = True
    ex1()

if __name__ == '__main__':
    ex2()

example 2:

def ex1():
    print(g_var)
    # pass

def ex2():
    global g_var
    g_var = True
    ex1()

if __name__ == '__main__':
    ex2()

example 3:

g_var = True

def ex1(var1=g_var):
    pass

def ex2():
    ex1()

if __name__ == '__main__':
    ex2()

it seems that example 1 and example 3 are same thing.

example 2 and example 3 runs good. but example 1 give me the error NameError: global name 'g_var' is not defined.

Upvotes: 1

Views: 510

Answers (1)

Daniel
Daniel

Reputation: 42748

Default Values are evaluated at time of definition. At this time, g_var isn't defined in example 1.

Upvotes: 3

Related Questions