函数的参数是函数内部与外部交流的纽带,上一篇文章我们使用了最简单的参数形式(就一个参数)。接下来测试一下多个参数的情况是怎样的?
1.测试1
例子中使用了两个参数p1和p2, 函数的功能就是打印出p1 vs p2。接着调用了两次sayHello函数,两次给参数赋了不同的值,从结果可以看出函数调用时是按顺序给参数赋值的,即第1个参数赋给了p1,第二个参数赋给了p2,以此类推。当然了这里只有两个参数没得推。那么有时候我很任性不想按顺序给参数怎么办?
2.测试2
像这样在函数调用时把参数名带上(如p1 = 'hello')就可以不按顺序给参数了。python中称之为关键字参数。虽然可以不按顺序写参数但还是不够任性,不写参数行不行?
3.测试3
很显然自己定义的参数含着泪也要写完啊。难道就没有别的办法吗?
4.测试4
这一次还是很任性的没给参数,程序也没有报错,那是因为函数定义时给了参数。既然这样那参数还有啥用呢?当然有用了,函数定义时给的是默认参数,需要时可以传入别的参数来替换给的默认值。
除以上这些python的参数还有更任性的用法,当我在定义函数的时候还不知道要几个参数怎么办?看测试5:
测试代码中给了一个参数people但是在参数前面有个星号。实际上这个参数是一个元组(元组是python内置的一种数据结构可以用来放多个元素)。调用函数时的几个参数会被看成是元组的元素。不定长参数还有另一种形式那就是带两个星号的参数。
带两个星号的参数本质上是一个字典,所以传递参数的时候也要按照key=value的形式传递。还有更变态的传递参数的方法那就是一个星号和两个星号一起使用。不过一个星号必须放在前面: