2015-09-09 114 views
0

我想明白了,局部和全局變量在python是如何工作的,這裏是我的代碼爲什麼我得到這段python代碼的intendation錯誤?

def f(s): 

    print s 
    global s 
    print s 

s = "I hate spam." 
f('aa') 

上運行的腳本,這裏是我得到

File "global_local.py", line 4 
global s 
    ^
IndentationError: unindent does not match any outer indentation level 

誰能解釋錯誤對我來說這是爲什麼?

+2

您可能在您的編輯器中混合了製表符和空格。 –

+0

無論如何,您無法完成這項工作:'SyntaxError:name's'是本地和全局'。 –

+0

@ Two-BitAlchemist我寫了coed來觸發這個錯誤本身,但是卻得到了這個錯誤。這就是爲什麼我在這裏發佈它 – Dude

回答

2

這是你的代碼:

def f(s):· 

-T--print s 
····global s 
····print s 

s = "I hate spam." 
f('aa') 

·代表單個空格,並-T--是標籤。

正如您所看到的,您正在混合標籤和空格。 Python的羣體,這些爲以下:

<INDENT1>print s 
<INDENT2>global s 
<INDENT2>print s 

打完def f(s):以便成爲該函數體內print s縮進。現在,下一個縮進與函數體的縮進不匹配,所以Python假定它不再是函數體的一部分。所以它必須來自外部。

但是縮進不匹配外層縮進(根本沒有縮進),所以你得到錯誤。

要解決此問題,請確保您在任何地方都使用相同類型的縮進。使用製表符或空格並不重要,但應該儘量保持一致,並使用來避免這些類型的錯誤。

相關問題