有什么不同?

时间:2017-11-10 15:23:51

标签: python python-3.x global-variables

我在python中看到了全局变量的答案但是当我写两个类似的脚本时无法实现它们之间的区别,一个是工作一个不是。请帮我理解其中的区别。正如我所说的那样,我阅读了许多关于此的文章,但是我头脑中的某些内容总是令人怀疑,这会不时地导致错误。

total = 0
def sum(a,b):
   total = a+b
   print ("inner total is:",total)
return total 

sum(19,21)
print ("outter total is:",total)

输出

  

内部总数为:40总额为:0

i = 2 

def a():
    i = i + 2 
    print (i)
    pass

a()

输出

  

UnboundLocalError Traceback(最近一次调用   最后)in()         6通         7   ----> 8 a(9)

     

in a(x)         2         3 def a(x):   ----> 4 i = i + x         5打印(i)         6通

     

UnboundLocalError:在赋值之前引用的局部变量'i'

2 个答案:

答案 0 :(得分:1)

通过执行i = i + 2,您实际上是在引用变量' i'在被赋值之前被引用。

def a():
    i = i + 2 
    print (i)
    pass

在下面的方法变量' total'被赋予一个值。所以你不会收到错误。

def sum(a,b):
   total = a+b
   print ("inner total is:",total)
return total 

答案 1 :(得分:0)

外部总变量是全局变量。而内部全局变量只有函数sum()内的范围,这给出了错误。

如果您希望在功能中全局访问,请执行以下操作:

total = 0
def sum(a,b):
   global total
   total = a+b
   print ("inner total is:",total)
   return total 

sum(19,21)
print ("outer total is:",total)