当前位置: 首页 > 面试题库 >

Python和Java参数传递

佟阳焱
2023-03-14
问题内容

我在很多地方都看到过,包括Python使用的Python文档通过“赋值”语义传递。来自Java背景,说“
Java按值传递基元,按引用传递对象”的常见错误是由于按值传递了对象引用,我不禁怀疑Python是否真的在做同样的事情事情。

在我看来,按值传递对象引用和按赋值传递对象的概念似乎相同。Python使用术语“传递分配”是否是为了减轻诸如我上面所述的错误语句的问题?如果是这样,可以公平地说参数传递在两种语言中的工作方式相似吗?

编辑:我不认为这个问题是重复的。在这里,我要问的是Python使用的术语,直接涉及Java的工作方式。另一个问题是关于语言是按值传递还是按引用传递。我知道按赋值传递是这里使用的术语,但是我的论点似乎得到了公认的答案的支持,这实际上与Java的处理方式没有什么不同。这只是一个不同的名字。


问题答案:

是的,Python在这方面似乎等效于Java。从http://learnpython.pbworks.com/w/page/15956522/Assignment:

但是您必须注意“更改参数”的含义。将新值分配给参数名称(在函数内部,参数只是局部变量)不会更改原始对象-只会将局部变量重新绑定到新对象。

因此,Python通过“值”传递“对象引用”。



 类似资料:
  • 通常情况下,定义函数时都会选择有参数的函数形式,函数参数的作用是传递数据给函数,令其对接收的数据做具体的操作处理。 在使用函数时,经常会用到形式参数(简称“形参”)和实际参数(简称“实参”),二者都叫参数,之间的区别是: 形式参数:在定义函数时,函数名后面括号中的参数就是形式参数,例如: 实际参数:在调用函数时,函数名后面括号中的参数称为实际参数,也就是函数的调用者给函数的参数。例如: 实参和形参

  • 我正在一个java类中运行一个python脚本,如下所示: 问题在于脚本。py通常采用如下命令行参数: Pythonscript.py-i C:/diretory/path-o C:/目录/路径 有可能在Java中通过PythonTeperter传递这些参数吗? 更新: 感谢Juned Ahsan我的代码现在是这样的: 但是脚本仍然没有得到任何参数。 我这样用对了吗?

  • 问题内容: Python的参数传递规则与C#的参数传递规则的主要区别(如果有)是什么? 我对Python非常熟悉,只是开始学习C#。我想知道我是否可以想到规则集关于何时通过引用传递对象或通过值传递对象(对于C#而言,其传递方式与在Python中相同),或者是否需要记住一些关键区别。 问题答案: C#会按值传递参数,除非您指定不同的要求。如果参数类型是结构,则将其值复制,否则将复制对对象的引用。返回

  • 本文向大家介绍Python参数传递机制传值和传引用原理详解,包括了Python参数传递机制传值和传引用原理详解的使用技巧和注意事项,需要的朋友参考一下 首先还是应该科普下函数参数传递机制,传值和传引用是什么意思?    函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题。基本的参数传递机制有两种:值传递和引用传递。   值传递(passl-by-val

  • 看两个例子: a = 1 def fun(a): a = 2 fun(a) print a # 1 a = [] def fun(a): a.append(1) fun(a) print a # [1] 所有的变量都可以理解是内存中一个对象的“引用”,或者,也可以看似c中void*的感觉。 通过id来看引用a的内存地址可以比较理解: a = 1 def fun(a): prin

  • 问题内容: 抱歉,如果我的问题是菜鸟。我正在使用pgsql 8.4运行Django 1.2,并且需要在从用户处获得输入后运行Java程序,进行一些计算并将结果返回给用户。 我是否可以知道在Java和Python Django之间传递数据的最佳方法是什么,以便解决上述情况?我听说过Jython,但是根据Django文档,它需要扩展名jython- Django,但目前不支持django1.2.x。我