我试图理解本地和全局变量如何在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
任何人都可以向我解释为什么会这样吗?
答案 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假定它不再是函数体的一部分。所以它必须来自外层。
但是缩进与外层缩进(根本没有缩进)不匹配,所以你得到了错误。
要解决此问题,请确保在任何地方使用相同类型的缩进。使用制表符或空格并不重要,但您应该尝试保持一致并使用 来避免这些错误。