Python全局变量/动态解释?

时间:2018-05-30 11:23:43

标签: python python-2.7

所以我使用Python 2.7.15并且在本地范围函数中使用全局变量时遇到了意外错误。我知道我可以在我的函数中使用“gloabl foo”(我知道,不推荐),但我预期的错误不是我期待的行号。

代码按预期工作:

foo = 123

def fooBar():
  print foo   ### cannot find foo from local scope, checks prev and prints 123

  ##  TEST 2  ##
  #foo=987
  #print foo    

fooBar() 

但是当我将代码更改为以下内容时,我希望打印出与测试#1相同的内容,但它会在打印语句中爆炸:

foo = 123

 def fooBar():
      print foo   ### blows up here... 

      ##  TEST 2  ##
      foo=987
      print foo    

fooBar() 

Traceback (most recent call last):
  File "python", line 9, in <module>
  File "python", line 4, in fooBar
UnboundLocalError: local variable 'foo' referenced before assignment

我假设它仍会打印'123'然后在我尝试为foo分配另一个值时爆炸。 几乎像Python解释器解析fooBar()并且知道我稍后在本地函数中执行foo的赋值然后在打印上爆炸,而不是抓取全局值?

提前致谢! -Kevin

0 个答案:

没有答案