Reputation: 51
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
Reputation: 42748
Default Values are evaluated at time of definition. At this time, g_var
isn't defined in example 1.
Upvotes: 3