python中的全局变量(矩阵)

python中的全局变量(矩阵),python,numpy,Python,Numpy,我试图使用numpy矩阵作为全局变量。然而,当我在其他脚本中引用下面的函数时,我在变量表中只得到“global_gABD=[]”和“gABD=matrix([[1,6,6]])(见附图)。我的gABD未保存为全局变量 def gABD(): global gABD import numpy as np gABD = np.matrix((1,6,6)) gABD() 有没有办法做到这一点,或者numpy.matrix不能在全球范围内使用 试试这个: a = 25 b = 3

我试图使用numpy矩阵作为全局变量。然而,当我在其他脚本中引用下面的函数时,我在变量表中只得到“global_gABD=[]”和“gABD=matrix([[1,6,6]])(见附图)。我的gABD未保存为全局变量

def gABD():

   global gABD
   import numpy as np
   gABD = np.matrix((1,6,6))
gABD()
有没有办法做到这一点,或者numpy.matrix不能在全球范围内使用

试试这个:

a = 25
b = 37
def foo():
    global a  # 'a' is in global namespace
    a = 10
    b = 0
foo()
# you should have now a = 10 and b= 37. If this simple example works, replace then a by your matrix.

当然,您可以为此使用全局变量。然而,这并不被视为良好做法。您可能需要阅读注释,您的变量和函数具有相同的名称,这将导致问题

def gABD():

   global mat
   import numpy as np
   mat = np.matrix((1,6,6))
gABD()
print (mat)
# [[1 6 6]]
更好的方法是从函数中返回变量,以便在代码中的其他地方使用:

def gABD():

   import numpy as np
   return np.matrix((1,6,6))

my_matrix = gABD()
print (my_matrix)
# [[1 6 6]]

变量名与函数名相同。。。这似乎是个坏主意什么是“变量表”?您可以使用任何您喜欢的作为全局变量,尽管这样做通常是不好的做法;但是请注意,变量会覆盖函数,因为它们具有相同的名称。我的python解释器软件(spyder)允许我查看当前使用的变量。如果你熟悉的话,和Matlab类似。是的,整数作为全局变量很好(这对我很有用)。但只要我用矩阵替换该值,它就会忽略全局声明。因此,在您的示例中,“a”是10,但当我将“a”设置为矩阵时,它会给我25。好的,现在尝试雅克提供的示例: