声明:在人工智能技术教学期间,不少学生向我提一些python相关的问题,所以为了让同学们掌握更多扩展知识更好地理解AI技术,我让助理负责分享这套python系列教程,希望能帮到大家!由于这套python教程不是由我所写,所以不如我的AI技术教学风趣幽默,学起来比较枯燥;但它的知识点还是讲到位的了,也值得阅读!想要学习AI技术的同学可以点击跳转到我的教学网站。PS:看不懂本篇文章的同学请先看前面的文章,循序渐进每天学一点就不会觉得难了!

在Python中,默认通过引用(也就是指针)进行函数的参数传递,是因为这通常是我们所想要的:这意味着不需要创建多个拷贝就可以在我们的程序中传递很大的对象,并且能够按照需要方便地更新这些对象。

如果不想要函数内部的修改影响传递给它的对象,那么,我们可以简单地创建一个拷贝,如下面的代码所示,利用分片的方式创建了L的拷贝。

L = [1,2]

changer(X,L[:]) # Pass a copy,so our 'L' does not change

当然也可以在函数内部进行拷贝。

def changer(a,b):

b = b[:] # Copy input list so we don't impact caller

a = 2

b[0] = 'spam' # Changes our list copy only

除了上面的两种方式外,我们还可以将传入的对象转换成元组,元组是不可变对象,如果函数内部有代码想要改变元组,那么就会抛出异常。

L = [1,2]

changer(X,tuple(L)) # Pass a tuple,so changes are errors

这种原理会使用到内置tuple函数,将会以一个序列(任意可迭代对象)中的所用元素为基础创建一个新的元组。