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或者各位置参数的使用方式




留言

熱門文章