全局名称'...'未定义

时间:2016-04-13 19:38:37

标签: python python-2.7 python-3.x

example1example 2example 3有何不同之处。我已经尝试但什么都没有。我想我错过了一些或没有正确使用过。

示例1:

def ex1(var1=g_var):
    pass

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

if __name__ == '__main__':
    ex2()

示例2:

def ex1():
    print(g_var)
    # pass

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

if __name__ == '__main__':
    ex2()

示例3:

g_var = True

def ex1(var1=g_var):
    pass

def ex2():
    ex1()

if __name__ == '__main__':
    ex2()

似乎example 1example 3是相同的。

example 2example 3运行良好。但是example 1给了我错误NameError: global name 'g_var' is not defined

1 个答案:

答案 0 :(得分:3)

默认值在定义时进行评估。目前,示例1中未g_var定义。