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

“Python函数参数详解:位置参数、默认参数、可变参数和关键字参数”

发布时间:2023-05-30 14:22:37

Python是一种优秀的编程语言,它的自由和易用性使它成为了多种应用中的首选语言。Python拥有一系列高级特性,其中参数类型和传递方式就是其中一种特性。Python参数可以被分为4种类型:位置参数、默认参数、可变参数和关键字参数。在这篇文章中,我们将会详细介绍这几种参数类型。

1. 位置参数

位置参数是Python函数中最基本的参数,它是按照函数形参的位置顺序依次传入的。例如:

def addNum(x, y):
    return x + y

print(addNum(3, 4))
# 输出:7

这个函数中xy就是位置参数。当我们调用addNum(3, 4)函数时,实参34会分别对应形参xy,这就完成了位置参数的传递。

需要注意的是,位置参数必须以正确的顺序传入函数中,否则会出现参数不匹配的错误。

2. 默认参数

默认参数是函数中含有默认值的参数,如果调用者没有传入实参,则函数会使用默认值。默认参数 不要使用可变的类型(比如字典、列表等),因为这会导致共享对象的问题。

例如:

def addNum(x, y=10):
    return x + y

print(addNum(3))
# 输出:13

print(addNum(3, 4))
# 输出:7

这个函数中,y就是默认参数。当我们调用addNum(3)函数时,实参3只对应了形参x,而y则使用了默认值10。如果我们调用addNum(3, 4)函数时传递了实参4,则实参4覆盖了默认值10y的值变成了4

3. 可变参数

可变参数是指可以接受任意多个参数的参数类型,这些参数被打包成元组(list)或字典(dict)的形式传递给函数。

有两种可变参数类型:*args和**kwargs。

*args是接收任意数目的位置参数,它们打包成一个元组,传递给函数。例如:

def addNum(*args):
    s = 0
    for i in args:
        s += i
    return s

print(addNum(1, 2, 3, 4, 5))
# 输出:15

这个函数中,*args就是可变参数。当我们调用addNum(1, 2, 3, 4, 5)函数时,实参1,2,3,4,5都被打包成元组(1,2,3,4,5)传递给了函数,然后函数使用for循环遍历元组中的每一个元素,并将它们加起来返回。

**kwargs是接收任意数目的关键字参数,它们打包成一个字典,传递给函数。例如:

def printInfo(**kwargs):
    for key, value in kwargs.items():
        print(f'{key}:{value}')

printInfo(name='Tom', age=18, gender='male')
# 输出:
# name:Tom
# age:18
# gender:male

这个函数中,**kwargs就是可变参数。当我们调用printInfo(name='Tom', age=18, gender='male')函数时,实参name='Tom', age=18, gender='male'都被打包成字典{'name':'Tom', 'age':18, 'gender':'male'}传递给了函数,然后函数使用for循环遍历字典中的每一对键值对,并打印它们。

需要注意的是,*args和**kwargs必须要放在位置参数和默认参数之后。

4. 关键字参数

关键字参数是指通过键值对方式传递参数,形参需要与实参一一对应。关键字参数可以用来解决位置参数传递可能出现的参数不匹配的问题。

例如:

def printInfo(name, age, gender):
    print(f'{name}的年龄是{age},性别是{gender}')

printInfo(name='Tom', age=18, gender='male')
# 输出:
# Tom的年龄是18,性别是male

这个函数中,name,age,gender就是位置参数。当我们调用printInfo(name='Tom', age=18, gender='male')函数时,实参'Tom',18,'male'都通过键值对的方式,即name='Tom', age=18, gender='male'传递给了函数,并按照键值对的形式与形参对应起来。

需要注意的是,关键字参数必须在位置参数之后传递,否则会出现参数不匹配的错误。

总结:

在Python中,参数可以分为4种类型:位置参数、默认参数、可变参数和关键字参数。位置参数是最基本的参数类型,按照顺序依次传递。默认参数是含有默认值的参数,如果调用者没有传入实参,则函数会使用默认值。可变参数可以接受任意多个参数,它们被打包成元组或字典的形式传递给函数,分别对应*args和**kwargs。关键字参数是通过键值对方式传递的参数,形参需要与实参一一对应。掌握这些参数类型的使用,可以更方便地在Python中写出高效、优雅的代码。