我的代码是这样的
global _portlist1
def Identify():
#do something
_portlist1=["a","b"]
def RunTest():
print _portlist1
#do something else
def run():
Identify()
RunTest()
在RunTest()中,_ portlist1为空,但它在Identify()中定义。由于它是一个全局变量,因此在运行Identify()
后,它的值不应该被更改答案 0 :(得分:5)
你需要这个:
def Identify():
global _portlist1
_portlist1 = ["a", "b"]
即。声明函数中的全局变量 。否则,局部变量将遮蔽它。
答案 1 :(得分:5)
_portlist1
中的 Identify()
是本地的。 Python并不关心它与函数外的另一个变量同名。您还必须在函数内部将其声明为global
。
_portlist1 = None
def Identify():
global _portlist1
_portlist1 = ["a","b"]
虽然你不需要在函数之外向_portlist1
分配内容,但我喜欢这样做。否则,如果您不致电Identify()
,则会获得NameError
。当然,你总能抓到NameError
;在这种情况下做LBYL只是我的风格,因为它也更容易阅读恕我直言。