看的是廖雪峰的Python3讲解,因为感觉很容易忘记,索性就写下来,以便后面查阅。
1、位置参数
eg: power (x,n),其中x,n都是位置参数,调用函数时,传入的两个值按照位置顺序依次赋值
2、默认参数
eg: power(x,n=2),n就是默认参数,再次调用power函数时,若n为2则不需要传入,默认n=2
但是要注意:(1) 必选参数必须在前,默认参数在后。
(2) 默认参数必须指向不变对象。若指向变量,则每次调用函数的时候,默认参数的值都会发生改变。
3、可变参数:传入的参数个数是可变的
利用可变参数,当传入多个参数的时候,不再需要传入一个list或tuple,而是直接传入多个参数,如calc(1,2,3),但在函数内部,参数接收到的是一个tuple。
可变参数函数定义如下:def calc(*numbers),对比之前定义list和tuple的时候,仅仅在参数前面加了一个*号。
如果已经有一个list或者tuple,要调用一个可变参数的函数,可直接写成calc(*num),在list或tuple前面加一个*号
4、关键字参数
可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装成一个tuple。而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。在参数前面加两个**。实例如下
def person(name, age, **kw):
print('name:', name, 'age:', age, 'other:', kw)
>>>person('Michael',30)
name: Michael age: 30 other: {}
>>>person('Adam', 45, gender='M',job='Engineer')
name: Adam age: 45 other: {'gender' : 'M', 'job': 'Engineer‘}
若本身有一个dict,可直接在前面加两个**作为参数传进去
5、命名关键字参数
def person(name, age, *, city, job) 命名关键字参数以*作为特殊分隔符
调用如下person('Jack', 30, city='Beijing', job='Engineer')
总结:
参数定义的顺序必须是:必选参数、默认参数、可变参数/命名关键字参数和关键字参数
对于任意函数,都可以通过类似func(*args, **kw)的形式调用