Java和Python中传递参数的区别是什么?

2024-09-25 00:24:27 发布

您现在位置:Python中文网/ 问答频道 /正文

<>我来自java和C++,现在我学习了用{a1}教程学习Python。在

据我所知,在Java中,参数是通过值传递的。它们似乎是通过引用传递的,因为当参数是对象时,我们传递对象的引用。因此,如果在被调用的函数中更改对象状态,那么即使在函数调用之后,对象也会被修改。但是,如果我们在函数内部重新分配函数参数,我们就改变了被引用的对象,这意味着从那时起,函数的参数将不再受到影响。在

一个简单的例子:

void foo(List<Integer> l){
  l.append(1);  //affecting list_argument
  l = new ArrayList<int>();
  l.append(2);  //not affecting list_argument
}

public static void main(String[] args){
  List<Integer> list_argument = new ArrayList<Integer>();
  foo(list_argument); //passing list_argument's reference by value
  //list_argument contains 1 only
}

现在,我正在阅读this一篇关于在Python中传递参数的文章。在本文中,它指的是一个名为“通过对象传递”(passing by object)的奇特名称策略,但对我来说,它似乎正是我上面描述的机制。在

所以,我的问题是:Python和Java的传递参数策略有什么区别吗?在


Tags: 对象函数new参数foointegerjavaargument