在pandas中,inplace参数对引用进行了修改,但我知道在python中,数据是按值发送的,而不是按引用发送的。我想知道这是如何实现的,或者这是如何工作的
Python的参数传递模型既不是"按值传递"也不是"按引用传递",而是"按对象引用传递">
当您将字典传递给函数并在函数内修改该字典时,所做的更改将反映在字典的任何位置上。
然而,在这里,我们正在处理一些更不模糊的事情。当将inplace=True
传递给对pandas
对象(无论是Series
还是DataFrame
(的方法调用时,我们只是说:更改当前对象,而不是给我一个新对象。方法调用可以修改它们被调用的实例的变量——这与一种语言是否"是"无关;按值调用";或";通过引用调用";。唯一会变得棘手的情况是,如果一种语言只有常量(想想val
(而没有变量(想想var
(——想想纯函数语言。然后,这是真的——你只能返回新的对象,不能修改任何旧的对象。然而,在实践中,即使使用最纯粹的语言,你也可以找到更新记录的方法。