如果没有return语句,函数内部的任何更改都应该无法访问,对吗?
def my_fun(a):
a[0] = 'new value:'
a[1] = a[1] + 1
x = ['old value:', 99]
my_fun(x)
print (x[0], x[1])
我只是运行这段代码,并把它作为新值发布:100我正在使用python 3.6。还会以其他任何编程语言运行吗?
在Python中,参数是通过引用传递的,这意味着对它们的任何修改都将在调用后保留。但是,重新分配对象会更改引用的目标,并且无法保留任何后续修改。考虑以下示例:
def foo(bar):
bar[0] = 2 # modification
bar = [] # reassigment
x = [1]
print(x)
foo(x)
print(x)
输出:
[1] [2]
有些对象(例如元组或整数)是不可变的,这意味着它们不能被修改,并且在尝试时会引发异常。必须重新分配它们才能修改它们。
这是特定于Python的。爪哇作用在一个表面上相似的方式,但是实现非常不同:对象由参考和携带修饰过通过,而简单的数据类型(int
,double
,char
等)被复制和修改不结转。C和C ++永远不会修改对象,保留对象修改的唯一方法是将对象上的指针传递给函数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句