【发布时间】:2016-09-14 13:25:48
【问题描述】:
我理解在 Python 中为对象分配名称会创建对该对象的引用,并且当对象的引用计数变为零时,它会被垃圾收集。我想了解我是否应该在我的代码中使用指针,或者是否允许定期垃圾收集更好。
import time
while True:
foo = time.clock() #every iteration get the clock time
在我上面的代码中,循环的每次迭代都分配变量名称“foo”来引用从 time.clock() 返回的新浮点对象。因为我知道“foo”总是会引用从 time.clock() 返回的浮点对象,所以使用指针是否更有效? (例如来自 ctypes 模块)?如果这是 C,我会使用指针,但在 Python 中我不确定它是否重要。
【问题讨论】:
-
呃,没有。 ctypes 模块用于与 C 接口,你永远不会在纯 Python 代码中使用它。您应该从没有内置指针类型这一事实中得到提示。
-
ctypes用于将 Python 与其他语言(尤其是 C)交互时使用。原生 Python 没有,也不需要指针。 -
另外,不清楚您认为“指向浮点对象的指针”与为该对象分配名称有何不同。
-
您还应该记住,Python 是用 C 以外的语言实现的,例如 C#(Iron Python)、Java (Jython) 和 Python (PyPy),因此即使实现,指针也是外来的。
-
@DanielRoseman 我对对象和名称/指针彼此分开的理解错了吗?它们在内存中不占用不同的地址吗?
标签: python pointers garbage-collection ctypes