2012-10-04 72 views
0

有人可以解释为什么gloabl变量x & Y不是在printfunc认可,Python函数定义的全局参数

code.py

global x 
global y 

def test(val_x=None,val_y=None) 
    x = val_x 
    y = val_y 
    printfunc() 

def printfunc(): 
    print('x',x) 
    print('y',y) 

if __name__ = '__main__': 
    test(val_x=1,val_y=2) 

回答

2

场所内test()global

global用于函数内部,以便我们可以更改全局变量或创建添加到全局名称空间的变量。 :

def test(val_x=None,val_y=None): 
     global x 
     global y 
     x = val_x 
     y = val_y 
     printfunc() 
0

global关键字用于代码块内部指定,声明的变量是全局的,而不是本地的。因此,在您的函数中移动global

def test(val_x=None,val_y=None): #you also forgot ':' here 
    global x, y 
    x = val_x 
    y = val_y 
    printfunc() 

def printfunc(): 
    global x, y 
    print('x',x) 
    print('y',y) 
+3

'printfunc()'不应该需要'global',因为它们没有在那里分配。 – glglgl

+0

他们不是必需的,但如果你写这个,你可以很容易地看到,这些变量是全局的 –