Python自学之函数参数总结

来源:互联网 发布:再也没有 知乎 编辑:程序博客网 时间:2024/06/05 07:53

Python中定义的函数可以使用必选参数、默认参数、可变参数、命名关键字参数和关键字参数,使用的顺序也服从上述排列。

1-必选参数

def func(x):    print(x)

2-默认参数

def func(x,n = 2):    print(x,n)

调用时:

>>>func(20)20 2>>>func(20,5)20 5

3-可变参数

def func(*value):    print(value)

可变参数,顾名思义就是可以传入0-任意个参数,也可以传入一个list或tuple
调用:

>>>func(1,2,3)1 2 3>>>b = [1,2,3]>>>func(*b)1 2 3

4-关键字参数
关键字参数与可变参数可以说大部分一样,不同的是可变参数会将传入的参数组装成list,而关键字参数会将传入的参数组装成dict

def func(n,**dict):    print(n,dict)

调用

>>>func(12,x='1',y='2')12 {'x':'1',y':'2'}>>>dic = {'x':'1','y':'2'}>>>func(12,**dic)12 {'x':'1',y':'2'}

5-命名关键字参数
命名关键字参数的作用是限制传入的关键字参数,也就是说你只能输入特殊固定的键值对,如果函数定义中有可变参数,那么命名关键字参数紧跟其后,如果没有可变参数,需要增加一个 ,*,来区分位置参数和关键字参数

def func(x,y,*,height,width):   #限制只传入key = height和width    print(x,y,height,width)

Tips
1-默认参数必须指向不变对象;(list是可变对象)
原因:函数在定义的时候默认参数的值就已经是个占用内存的变量了,函数被调用时,如果默认参数是可变的list,那么在每次调用函数之后默认参数的值都会发生改变。
Eg.

def add_list(l =[]):    #传入的默认参数是可变参数list    l.append('end')         print(l)

可以这样修改:

def add_list(l = None):     #将默认参数置为None不可变参数    if l is None:           #如果选择使用默认参数,就置为list        l = []    l.append('end')    print(l)