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

Python函数常用参数详解:位置参数、关键字参数和默认参数

发布时间:2023-06-02 05:42:28

Python是一种高级编程语言,通过定义函数,我们可以在程序中实现代码重用,减少冗余代码。在定义函数时,我们需要说明函数的参数与返回值。Python的函数参数有三种类型:位置参数(positional arguments)、关键字参数(keyword arguments)和默认参数(default arguments)。

位置参数:

位置参数即是按照顺序传递给函数的参数,在函数定义时需要声明参数的名称。例如:

def greet(name, message):
    print(message, name)

greet('John', 'Hello')

在上面的代码中,函数greet拥有两个位置参数:name和message。在调用函数时以位置参数的方式分别传入'John'和'Hello'。在函数内部,'John'和'Hello'可以分别通过name和message获取。

关键字参数:

关键字参数即是通过名称传递给函数的参数,和位置参数不同的是,它不需要按照顺序,而是根据参数名来匹配传入的值,在函数定义时需要指定参数名。例如:

def greet(name, message):
    print(message, name)

greet(message='Hello', name='John')

在上面的代码中,我们传递给函数greet两个关键字参数:name和message。在函数调用时我们不需要按照参数定义的顺序传递参数,而是可以通过名称传递。同时,参数名对大小写不敏感。

默认参数:

默认参数指的是在函数定义时指定的默认值,函数调用时如果没有传递该参数,则使用默认值。例如:

def greet(name, message='Hello'):
    print(message, name)

greet('John')

在上面的代码中,函数greet定义了一个默认参数,当调用greet时只传递'name'参数,因为'message'有默认值,解释器就会使用默认值打印出输出。

除了上面提到的三种参数类型,Python还有三种特殊的参数类型:*args、**kwargs、*。下面我们将分别介绍这三种参数类型:

*args:

*args参数可以接收多个不定长度的位置参数,它把所有的参数保存到一个tuple中,接收任意多个参数,这些参数会以一个tuple的形式传递进来:

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

print(my_sum(1, 2, 3, 4, 5)) # 15
print(my_sum(10, 20, 30)) # 60

在上面的代码中,我们定义了一个名为my_sum的函数,函数的前面加上了一个*args参数,表示它可以接收任意个数的位置参数。在函数内部,我们利用for循环遍历所有传入的参数,并将它们相加,最后返回结果。

**kwargs:

**kwargs参数可以接收多个不定长度的关键字参数,它把所有的参数保存到一个dict中,接收任意多个关键字参数,这些参数会以一个dict的形式传递进来:

def describe_person(name, age, **kwargs):
    print('Name:', name)
    print('Age:', age)
    for key, value in kwargs.items():
        print(key.capitalize() + ':', value)

describe_person('John', 26, city='New York', country='USA', occupation='Programmer')

在上面的代码中,我们定义了一个名为describe_person的函数,除了name和age两个位置参数外,函数还可以接收任意多个关键字参数,这些参数可以通过for循环遍历,并打印出来。

*:

单个星号*是将列表或元组解包:

def print_nums(a, b, c):
    print(a, b, c)

my_list = [1, 2, 3]

print_nums(*my_list) # 1 2 3

在上面的代码中,我们定义了一个名为print_nums的函数,该函数需要三个参数a、b和c。然后我们定义了一个列表my_list,包含了三个元素1、2和3。通过在列表名前加上一个星号*,我们将列表中的元素解包,并按顺序传递给函数print_nums,最终打印出结果。

总结:

Python中函数可以接收三种参数类型:位置参数、关键字参数和默认参数。另外还有三种特殊的参数类型:*args、**kwargs和*。在函数参数的传递过程中,我们可以通过列表、元组、字典等数据类型来保存参数,然后利用*和**符号来调用参数。在Python中,函数传参很灵活,根据具体需求选择不同的参数类型,可以提高工作效率,加快开发速度。