我想做这样的事情,但我得到一个SyntaxWarning并且它没有按预期工作
RAWR = "hi"
def test(bool):
if bool:
RAWR = "hello" # make RAWR a new variable, don't reference global in this function
else:
global RAWR
RAWR = "rawr" # reference global variable in this function
print RAWR # if bool, use local, else use global (and modify global)
Run Code Online (Sandbox Code Playgroud)
我如何让它工作?传入True或False会修改全局变量.
小智 5
你不能.在范围内,特定名称指的是局部变量,或指非局部(例如全局或外部函数)变量.不是都.该global RAWR行为RAWR整个范围创建了一个全局(这就是为什么你得到一个警告,它没有按照你的想法做到这一点),就像赋值给变量使它成为整个范围的本地一样.编辑:感谢veredesmarald,我们现在知道它实际上是Python 2中的语法错误.这一半答案仅适用于Python 3.
您应该只使用不同名称的局部变量,并在要将其"提升"为全局的分支中,设置全局变量和局部变量.(或者根本不使用全局变量.)