python 函数参数
分五种:
1.位置参数
2.默认参数
3.可变参数
4.命名关键字参数
5.关键字参数
位置参数是必填参数
默认参数不填,就用默认值
可变参数,可以传0到n个参数进去,会在内部组装成tuple
def func(*nums):
print(type(nums))
func(1,2,3,4)
a = [1,2,3,4]
func(*a)
关键字参数
key1=value1,key2=value2传进去,在内部组装成dict
def func(a,b,**kw):
print(a,b)
print(type(kw))
func(1,2,c=3,d=4)
输出:
<class 'dict'>
已有dict,可通过**dict传入
mydict = {'c':3,'d':4}
def func(a,b,**kw):
print(a,b)
print(type(kw))
func(1,2,**mydict)
输出:
<class 'dict'>
命名关键字参数
关键字参数可以传任意key,命名关键字,确定了只能传某些key
定义方法
def func(a,b,*,c,d):
print(a,b,c,d)
func(1,2,c=3,d=4) 输出:1 2 3 4
func(1,2,3,4) 输出: TypeError: func() takes 2 positional arguments but 4 were given
命名关键字参数之前若定义可变参数,则可以不用单独写*:
def func(a,b,*c,d,e):
print(a,b,c,d,e)
func(1,2,3,4,5,d=6,e=7)
输出:
1 2 (3, 4, 5) 6 7
参数组合
参数组合起来的顺序是位置参数、默认参数、可变参数、命名关键字参数,关键字参数
def func(a,b,*c,d,e,**f):
print(a,b,c,d,e,f)
func(1,2,3,4,5,d=6,e=7,z=8,y=9,x=10)
输出:
1 2 (3, 4, 5) 6 7 {'z': 8, 'y': 9, 'x': 10}
无论函数如何定义,都可以通过*args,**kw方式传入
def func(a,b,*c,d,e,**f):
print(a,b,c,d,e,f)
mylist = [1,2,3,4,5]
mydict = {'d':6,'e':7,'z':8,'y':9,'x':10}
func(*mylist,**mydict)
输出:
1 2 (3, 4, 5) 6 7 {'z': 8, 'y': 9, 'x': 10}
所以函数都可以定义成
def func(*args,**kwargs)
实际上这种定义,不能乱传参,函数内部定义好了各个key或者各位置参数的使用方式
留言
張貼留言