2015-09-09 117 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假定它不再是函数体的一部分。所以它必须来自外部。

但是缩进不匹配外层缩进(根本没有缩进),所以你得到错误。

要解决此问题,请确保您在任何地方都使用相同类型的缩进。使用制表符或空格并不重要,但应该尽量保持一致,并使用来避免这些类型的错误。

相关问题