在 pandas 中,inplace参数对引用进行修改,但我知道在 python 中数据是按值而不是按引用发送的,我想知道这是如何实现的或它是如何工作的
1 回答
1
Python 的参数传递模型既不是“按值传递”也不是“按引用传递”,而是“按对象引用传递”</p>
当您将字典传递给函数并在函数内部修改该字典时,更改将反映在字典的任何地方。
然而,这里我们正在处理一些更不那么模棱两可的事情。当传递inplace=True
给pandas
对象(无论是 aSeries
还是 a DataFrame
)的方法调用时,我们只是说:更改当前对象而不是给我一个新对象。方法调用可以修改调用它们的实例的变量——这与语言是“按值调用”还是“按引用调用”无关。唯一会变得棘手的情况是,如果一种语言只有常量(想想val
)而没有变量(想想var
)——想想纯粹的函数式语言。然后,这是真的——你只能返回新对象,不能修改任何旧对象。但在实践中,即使是最纯粹的语言,您也可以找到就地更新记录的方法。
于 2021-12-03T13:12:45.487 回答