我在Python中发现了一件非常奇怪的事情。当试图从某个函数访问普通对象(如int
,float
等)时,它要求我将变量定义为全局变量。
但是当我尝试对Queue
做同样的事情时,结果却不同了;在那种情况下,即使我没有使它全局化,我也可以从函数中接近Queue
。
一些对象如何像全局变量(例如Queue
)和其他一些对象(如int
,string
等)?
我清楚自己: 这是两个代码示例: 一些def:
def some_def():
q.put(1)
一些主要的:
q = Queue.Queue()
另一个对象: 一些def:
def some_def():
number += 1
一些主要的:
number = 0
两个不同的代码示例将以不同的方式执行: 第一个将把值放在Queue中,而第二个将抛出一个Error,因为'number'不是一个全局变量。