假设存在一个具有id
其他属性的对象。
假设有一个仅需要object.id
处理的通用函数(例如:从ID中检索数据库中的对象值)
在Python 3中(执行内存还是性能)是否花费更多:
def my_function(self, id):
do_stuff_with(id)
my_function(my_object.id)
要么
def my_function(self, obj):
do_struff_with(obj.id)
my_function(my_object)
我以为答案取决于语言的实现,所以我想知道Python 3中使用object作为参数是否会产生额外的开销,因为我觉得它更灵活(想象在该函数的下一个实现中,您还需要object.name那么您不必修改签名)
在这两种情况下,都将对象引用传递给该函数,我不知道其他实现如何执行此操作,但请考虑C
指向Python对象的指针CPython
(以便使用相同的内存进行调用)。
此外,在这种情况下,点查找没有什么区别,您可以id
在函数调用期间执行的查找,也可以在主体内部进行查找(实际上,属性查找不应在意)。
最终,它归结为更有意义的事情,传递对象并让函数使用其在概念上更好地完成工作。如您所说,它也更加灵活,因此可以传递类实例。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句