在Java和Python中传递参数有什么区别?

时间:2017-09-13 09:11:12

标签: java python parameter-passing

我来自Java和C ++,现在我正在使用this教程学习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
}

现在,我正在阅读有关在Python中传递参数的this文章。在文章中,它指的是一种名为“通过对象传递”的花式名称策略,但对我而言,似乎完全我在上面描述的机制。

所以,我的问题是:Python和Java之间的传递参数策略有什么不同吗?

0 个答案:

没有答案
相关问题