在python中混淆了全局变量

时间:2017-05-01 07:35:06

标签: python-3.x

我是python的新手。在下面的代码中,我声明了三个变量$ seq 5 | awk 'BEGIN { getline; print "BEGIN read", $0} {print "main read", $0 }' BEGIN read 1 main read 2 main read 3 main read 4 main read 5 TGt_xTGt_y。当我尝试在TGt_z函数中使用这些变量时,我得到compute。为什么会这样?

Undefined reference error

2 个答案:

答案 0 :(得分:0)

在Python中,您不使用这样的全局变量。将您的代码更改为:

def compute():
   global TGt_z,TGt_x,TGt_y
   //your code

答案 1 :(得分:0)

您需要在global函数中调用compute语句:

def compute():
    global TGt_z, TGt_x, TGt_y #here
    TGt_z = TGt_z + Vz
    TGt_x = TGt_x + Vx
    TGt_y = TGt_y + Vy
    print("TGTx=============================",TGt_x)
    print("TGTy=============================", TGt_y)
    print("TGTz=============================",TGt_z)
    Range = math.sqrt(pow(TGt_x, 2) + pow(TGt_y, 2) + pow(TGt_z, 2))
    print("Range=============================",Range,"\n")

小例子:

>>> x = 5
>>> def compute():
...     x+=5
... 
>>> compute()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 2, in compute
UnboundLocalError: local variable 'x' referenced before assignment
>>> def compute():
...     global x
...     x+=5
... 
>>> compute()
>>> x
10
>>>