函数调用中的Python不可变类型

时间:2011-04-13 17:27:45

标签: python sqlalchemy

我有一个返回元组的sqlalchemy查询。我将这个元组传递给一个函数,因为它是一个不可变类型,所以在被调用函数中创建了一个新的元组实例。

python如何在内存管理方面解决这个问题?是否创建了元组的完整副本,或者它是否使用了一些聪明的“写入/零拷贝复制”功能?

对我来说,问题是这些原始元组会消耗大量内存,只需调用函数对它们进行一些处理,Python就会有效地将内存消耗加倍。

除了内联编写代码外,如何避免这种低效率?

2 个答案:

答案 0 :(得分:2)

调用函数时,只传递对元组的引用,而不是副本。它不可变的事实并不意味着它将被复制到函数调用上,只是你不能修改它。

答案 1 :(得分:0)

Python按值传递对象的引用。所以你不用担心它。