传递对象属性(id)或完整对象作为参数

孔德

假设存在一个具有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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章