我们今天来认真地讨论一个问题

看标题好像很严肃的样子,嘻嘻,其实就是讨论一下自定义函数中的参数能否修改的问题。

我们如果定义一个函数change(n),然后在函数内给n赋值。然后当我们调用这个函数,括号里面的参数会不会被改变成n的值?你可能不太明白我在说什么,我们通过几段代码的对比来解决一下我们刚才的疑问:

def change(n):
   n = 'Tom'
#定义完函数之后,记得按两下回车,看到<<<才可以继续写
name = 'Pony'
change(name)
name
#按回车,得到的结果是:'Pony'

我们先定义了一个change函数,然后函数内的值是n,给n赋值Tom。我们的目的就是,不管任何变量放在这个函数里面,最后的值都会被改成n的值,也就是Tom。但是,我们可以看到上面name的值并没有改成n的值。所以,我们这种修改变量值的方法是不适用的。那我们应该怎么写一个函数来修改变量值,请看代码:

def change(n):
   n[0] = 'Tom'
#定义完函数之后,记得按两下回车,看到<<<才可以继续写
name = ['Pony']
change(name)
name
#按回车,得到的结果是:['Tom']

你看一下上面得到的结果,就达到了我们的期望。name的值改成了n的值。我们来分析一下两段代码的区别:主要是在n和name的赋值这里有区别。这里的n是当成了我们前面学的序列来赋值,所以,我们name的赋值方式也要写成序列,这样就可以完成两个数之间的替换。你可能很好奇为什么可以这样做?我们通过一段代码来解释一下原因:

name = ['Pony']
n = name
n[0] = ['Tom']
name
#按回车,得到的结果是['Tom']

原理类似于上面这段代码,就是先新建一个序列,然后把序列赋给n,接下来n改变序列的值。

好的,今天的内容就讲到这里啦~

 

(文章图片若有侵权,请联系作者删除)

猜你喜欢

转载自www.cnblogs.com/Galaxyfengfeng/p/9147457.html