如何在python中定义全局数组 我想将tm和prs定义为全局数组,并在两个函数中使用它们,我该如何定义它们?
import numpy as np
import matplotlib.pyplot as plt
tm = []
prs = []
def drw_prs_tm(msg):
tm = np.append(tm,t)
prs = np.append(prs,s)
def print_end(msg):
plt.plot(tm,prs,'k-')
答案 0 :(得分:6)
您需要在方法
中将它们称为global <var_name>
def drw_prs_tm(msg):
global tm
global prs
tm = np.append(tm,t)
prs = np.append(prs,s)
def print_end(msg):
global tm
global prs
plt.plot(tm,prs,'k-')
全局语句是一个声明,它包含整个当前代码块。这意味着列出的标识符将被解释为全局变量。没有全局变量就不可能分配给全局变量,尽管自由变量可以引用全局变量而不被声明为全局变量。
在Python中,仅在函数内引用的变量是隐式全局变量。如果在函数体内的任何位置为变量分配了一个新值,则假定它是一个局部变量。如果变量在函数内部被赋予了新值,则该变量是隐式本地变量,您需要将其显式声明为“全局”。
答案 1 :(得分:0)
使用global
关键字:
def drw_prs_tm(msg):
global tm, prs # Make tm and prs global
tm = np.append(tm,t)
prs = np.append(prs,s)
另外,如果你保持现状,那么你不需要在第二个函数中声明tm
和prs
为全局。只有第一个需要它,因为它正在修改全局列表。
答案 2 :(得分:0)
如果你在其他功能中有功能,请使用:
def ex8():
ex8.var = 'foo'
def inner():
ex8.var = 'bar'
print 'inside inner, ex8.var is ', ex8.var
inner()
print 'inside outer function, ex8.var is ', ex8.var
ex8()
inside inner, ex8.var is bar
inside outer function, ex8.var is bar
更多:http://www.saltycrane.com/blog/2008/01/python-variable-scope-notes/