欢迎访问宙启技术站
智能推送

Python函数中的参数类型:可变参数、关键字参数和默认参数

发布时间:2023-06-11 02:57:35

在Python中,我们可以定义函数,将一段代码组织为一个整体,方便复用。函数通常具有输入(参数)和输出(返回值),其中输入参数又分为不同的类型,包括可变参数、关键字参数和默认参数。这些不同类型的参数可以让我们更方便、灵活地调用函数,下面我们将一一介绍。

1. 可变参数

可变参数指的是在函数定义时,我们可以预留一个不定数量的参数。在Python中,可变参数分为两种,分别是*args和**kwargs。

*args表示我们在调用函数时可以传入任意数量的非关键字参数,这些参数将被打包成一个元组。

例如,我们可以定义一个sum函数来求一组数的和,无论这组数的数量有多少个:

def sum(*args):

    res = 0

    for i in args:

        res += i

    return res

print(sum(1,2,3,4,5))  # 15

print(sum(1,2,3,4))    # 10

print(sum(1,2))        # 3

注意,在调用函数时,我们需要将参数以逗号分隔开即可。

**kwargs表示我们在调用函数时可以传入任意数量的关键字参数,这些参数将被打包成一个字典。

例如,我们可以定义一个info函数来输出个人信息,无论个人信息有多少条:

def info(**kwargs):

    for key,value in kwargs.items():

        print(key,":",value)

info(name="Tom",age=18,gender="male")

info(city="New York",job="Engineer")

输出:

name : Tom

age : 18

gender : male

city : New York

job : Engineer

需要注意的是,在定义函数时,如果同时需要使用*args和**kwargs,我们需要按照顺序声明这两个参数,即*args放在前面,**kwargs放在后面。

例如,我们可以定义一个person函数来输出一个人的所有信息:

def person(name,*args,**kwargs):

    print("name:",name)

    print("args:",args)

    print("kwargs:",kwargs)

person("Tom","China",18,gender="male",city="Shanghai")

输出:

name : Tom

args : ('China', 18)

kwargs : {'gender': 'male', 'city': 'Shanghai'}

2. 关键字参数

关键字参数指的是在调用函数时,我们可以通过键值对的方式将参数传入函数。这个特性使得我们在调用函数时可以不用关心参数的顺序,只需要将参数名和对应的值传给函数即可。

例如,我们可以定义一个point函数来表示一个点的坐标:

def point(x,y):

    print("point coordinates:",x,y)

point(x=10,y=20)

point(y=20,x=10)

输出:

point coordinates: 10 20

point coordinates: 10 20

需要注意的是,如果我们使用了可变参数,则需要传递的关键字参数必须要在*args的参数之后,否则将会产生语法错误。

3. 默认参数

默认参数指的是在函数定义时,我们可以为参数设置一个默认值,如果在调用函数时没有传递对应的值,则会使用默认值。

例如,我们可以定义一个power函数来计算一个数的n次方,默认情况下n为2:

def power(x,n=2):

    res = 1

    while n > 0:

        res *= x

        n -= 1

    return res

print(power(4))  # 16

print(power(4,3))  # 64

需要注意的是,当函数的参数中既有默认参数,又有不带默认值的参数时,我们需要按照顺序传递参数。如果需要跳过某一个参数,可以使用下划线_占位,表示跳过该参数。例如:

def person(name,age,city="Beijing"):

    print("name:",name)

    print("age:",age)

    print("city:",city)

person("Tom",18)

person("Jerry",20,city="Shanghai")

person("Lucy",city="Guangzhou",age=22)  # 注意参数顺序

person(city="Chongqing",age=25,name="Bob")  

person("Lily",_,city="Chengdu")  # 使用占位符跳过age这个参数

总结

Python函数中参数类型包括可变参数、关键字参数和默认参数。可变参数分为*args和**kwargs,关键字参数通过键值对的方式传入,而默认参数可以为参数设置一个默认值。使用不同的参数类型可以让我们在调用函数时更加方便与灵活,提高代码的可读性和复用性。