python中定义函数时如何书写可变参数和默认参数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中定义函数时如何书写可变参数和默认参数相关的知识,希望对你有一定的参考价值。

参考技术A

参数名前面加*是可变位置参数,

加**是可变关键字参数;

参数名=默认值可以用来为参数指定默认值。

下面是一个例子:

#/使前面的参数成为仅仅是位置参数

def f(a=1,b=2,/,c=3,*args,**kwargs):print(a,b,c,*args,kwargs)

def f2(a=1,b=2,c=3,*args,**kwargs):print(a,b,c,*args,kwargs)

#*使后面的参数成为仅仅是关键字参数

def f3(a=1,b=2,*,c=3,d=4):print(a,b,c,d)

#/使前面的参数成为仅仅是位置参数

def f4(a=1,b=2,/,c=3,d=4):print(a,b,c,d)

f()

f(11,22)

#f(a=11,b=22)

f(c=666)

f(1,2,3,4,5,x=5,y=6)

f2()

f2(a=11,b=22)

f2(c=888)

f2("a","b","c",1,2,p="ok")

f3(1001,2222)

f3(a=1001)

f3(111,c=333,d=444)

f3(6,6,c=6,d=6)

#f3(6,6,6,6)

f4(1001,2222)

#f4(1001,b=2222)

f4(1001)

#f4(a=1001)

f4(111,c=333,d=444)

f4(1,2,3,4)

运行结果截图如下:

Python -函数的参数定义

一、函数的参数有四种,位置参数、默认参数、可变参数和关键字参数

def func(x, y=0, *arg, **args):
    ‘‘‘x为位置参数
      y有默认值
      *arg为可变参数
      **args为关键字参数
    ‘‘‘
    print(x= , x)
    print(y= , y)
    print(*arg= , arg)
    print(**arg= , args)

 

二、仅输入位置参数时,默认参数会打印默认值

>>> func(1)
x=  1
y=  0
*arg=  ()
**arg=  {}

 

三、输入两个参数

>>> func(1,2)
x=  1
y=  2
*arg=  ()
**arg=  {}

 

三、可变参数:可变参数接收0个或多个参数。输入的多个参数会自动组合成一个tuple,变成可变参数

>>> func(1,2,3,4,5)
x=  1
y=  2
*arg=  (3, 4, 5)
**arg=  {}

 

可变参数可以直接接收一个list或者tuple,但是要在参数前面加上*

>>> list1 = [3, 4, 5]
>>> tuple1 = (3, 4, 5)
>>> func(1,2,*list1) x= 1 y= 2 *arg= (3, 4, 5) **arg= {}
>>> func(1,2,*tuple1) x= 1 y= 2 *arg= (3, 4, 5) **arg= {}

 

四、关键字参数:关键字参数接收0个或多个带参数名的参数,这些参数会自动组合为一个dict,变成关键字参数

>>> func(1, 2, [3, 4, 5], 6, name=alex, age=18)
x=  1
y=  2
*arg=  ([3, 4, 5], 6)
**arg=  {name: alex, age: 18}

 

关键字参数可以直接接收一个dict,但是要在参数前面加上**

>>> dict1 = {name: Alex, age: 18}
>>> func(1, 2, [3, 4, 5], 6, **dict1)
x=  1
y=  2
*arg=  ([3, 4, 5], 6)
**arg=  {name: Alex, age: 18}

 



以上是关于python中定义函数时如何书写可变参数和默认参数的主要内容,如果未能解决你的问题,请参考以下文章

Python的位置参数、默认参数、关键字参数、可变参数区别

Python 可变类型作为函数默认参数时的副作用

参数定义的顺序必须是:必选参数默认参数可变参数命名关键字参数和关键字参数。

python位置参数默认参数关键字参数可变参数的区别

python位置参数默认参数关键字参数可变参数的区别

python函数中的位置参数默认参数关键字参数可变参数区别