函数传递参数时的简要关键点:
1、参数的传递是通过自动将对象赋值给本地变量名来实现的。函数参数在实际中只是Python赋值的一个实例。因为引用是以指针的形式实现的,所有的参数实际上都是通过指针进行传递的。
2、在函数内部的参数名的赋值不会影响调用者。
3、改变函数的可变对象参数的值也许会对调用者有影响。即是参数是简单的赋值给传入的对象,函数能够就地改变传入的可变对象,因此其结果会影响调用者。可变参数对于函数来说是可以做输入和输出的。
对可变对象的在原处的修改会影响其他引用了该对象的变量。
如果不想要函数内部在原处的修改影响传递给它的对象,我们可以简单的创建一个明确地可变对象的拷贝;
1 L = [1,2] 2 b = L[:] #b即是对L的拷贝
参数匹配模型大纲:
1、位置:从左至右匹配 一般情况下,也是我们迄今为止最常使用的方法,是通过位置进行匹配把参数值传递给函数头部的参数名称,匹配顺序为从左到右。
2、关键字参数:通过参数名进行匹配 调用者可以定义哪一个函数接受这个值,通过在调用时使用参数的变量名,使用name = value 这样的语法。
3、默认参数:为没有传入值得参数定义参数值 如果调用时传入的值过于少的话,函数能够为参数定义接受的默认值,再一次使用语法name=value。
4、可变参数:收集任意多给予位置或关键字的参数 函数能够使用特定的参数,他们是以字符*开头,收集任意多的额外参数。
5、可变参数解包:传递任意多的给予位置或关键字的参数 调用者能够再使用*语法去将参数集合打散,分成参数。这个*与在函数头部的*恰恰相反,在函数头部它意味着收集任意多的参数,而在调用者中意味着传递任意多的参数。
6、keyword-only参数:参数必须按照名称传递