为什么我这个python代码会出现意图错误?

时间:2015-09-09 19:17:01

标签: python

我试图理解本地和全局变量如何在python中工作,这是我的代码

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

任何人都可以向我解释为什么会这样吗?

1 个答案:

答案 0 :(得分:2)

这是你的代码:

std::thread t(&SomeMethod);

def f(s):· -T--print s ····global s ····print s s = "I hate spam." f('aa') 代表单个空格,·是一个标签。

如您所见,您正在混合制表符和空格。 Python将这些分组为以下内容:

-T--

因此<INDENT1>print s <INDENT2>global s <INDENT2>print s print s之后缩进,因此成为函数的主体。现在,下一个缩进与函数体的缩进不匹配,因此Python假定它不再是函数体的一部分。所以它必须来自外层。

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

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