假设有一个具有id其他属性的对象。
假设有一个只需要object.id处理的通用函数(例如:从 id 从数据库中检索对象值)
在 Python 3(内存方面或性能方面)执行以下操作是否花费更多:
def my_function(self, id):
do_stuff_with(id)
my_function(my_object.id)
Run Code Online (Sandbox Code Playgroud)
或者
def my_function(self, obj):
do_struff_with(obj.id)
my_function(my_object)
Run Code Online (Sandbox Code Playgroud)
我想这个答案取决于语言的实现,所以我想知道在 Python 3 中使用 object 作为参数是否有额外的成本,因为我觉得它更灵活(想象一下,在这个函数的下一个实现中,你还需要 object.name,那么你不必修改签名)
在这两种情况下,对象引用都被传递给函数,我不知道其他实现是如何做到这一点的,但是,请考虑C指向 Python 对象的指针CPython(因此调用相同的内存)。
此外,在这种情况下,点查找没有任何区别,您要么id在函数调用期间执行查找,要么在主体内部执行查找(实际上,属性查找不应该是在意)。
最后,它归结为更有意义的事情,传递对象并让函数用它做它想做的事情在概念上更好。正如您所说,它也更灵活,因此请传递类实例。
| 归档时间: |
|
| 查看次数: |
1847 次 |
| 最近记录: |