您的位置:首页 > 编程语言 > Python开发

Python自学之函数参数总结

2017-05-20 15:51 253 查看
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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: