2015-03-25 159 views
0
def func_print_x(): 
    ## x += 1 ## if uncomment this line, it will raise UnboundLocalError: local variable 'x' referenced before assignment 
    print x 
if __name__ = '__main__': 
    x = 4 
    func_print_x() 

更多 '特權' 在功能func_print_x(),有兩個規則:是否打印功能具有在python

  1. 爲 '線X + = 1',可變x被視爲局部變量;
  2. 當來到'打印x'時,變量x似乎是全局變量。

是否print函數有更多'特權'?

+0

不,'x'成爲一個局部變量*當你嘗試將功能*內分配給它,如同你'+ ='這裏。你可以在函數中使用全局變量'x',只要你不想在其他地方分配它。 – Marius 2015-03-25 04:19:48

+1

@Marius哦,我明白了。 '**不要嘗試分配給它**'就行了! 'print x + 1'正常工作。非常感謝! – 2015-03-25 04:26:28

回答

1
def f(): 
    global s 
    print s 
    s = "That's clear." 
    print s 


s = "Python is great!" 
f() 
print s 

O/P

Python is great! 
That's clear. 
That's clear. 

但whne你沒有global

def f(): 
    print s 
    s = "Me too." 
    print s 


s = "I hate spam." 
f() 
print s 

O/P

UnboundLocalError: local variable 's' referenced before assignment 

做,如果你嘗試,你會得到上面的錯誤將一些值分配給s

,如果你嘗試打印的s值會在函數內部打印

+0

我不知道's'是全球性還是本地性的。 – 2015-03-25 05:09:43