您的位置:

Python 函数参数的用法

一、参数的种类

在Python函数中,参数种类分为位置参数、默认参数、可变参数和关键字参数。

1、位置参数

位置参数是最普通的参数,也是必须要传入的参数。例如下面的函数:

def add(num1, num2):
    return num1 + num2

调用add函数时,必须要传入两个位置参数:

result = add(1, 2)
print(result) # 结果为3

2、默认参数

默认参数是在函数定义时设置一个默认值,如果调用时不传入此参数值,则函数会使用默认值。例如下面的函数:

def multiply(num1, num2=1):
    return num1 * num2

调用multiply函数时,如果不传入第二个参数,则默认使用num2=1:

result = multiply(5)
print(result) # 结果为5

3、可变参数

可变参数是指能够处理可变数量参数的函数。使用*args表示,其中args是一个元组,可以在函数中动态调用参数。例如下面的函数:

def add_nums(*args):
    result = 0
    for num in args:
        result += num
    return result

调用add_nums函数时,可以传入任意数量的参数:

result = add_nums(1, 2, 3, 4, 5)
print(result) # 结果为15

4、关键字参数

关键字参数是指通过“键:值”键值对的方式传入函数的参数,使用**kwargs表示,其中kwargs是一个字典。例如下面的函数:

def print_info(name, age, **kwargs):
    print("Name:", name)
    print("Age:", age)
    for key, value in kwargs.items():
        print(key + ": " + value)

调用print_info函数时,可以使用任意数量的关键字参数:

print_info("Lucy", 25, hometown="Beijing", profession="Doctor")
# 输出结果:
# Name: Lucy
# Age: 25
# hometown: Beijing
# profession: Doctor

二、参数使用的顺序

在Python函数中,参数需要按照以下顺序使用:

1、位置参数

2、默认参数

3、可变参数

4、关键字参数

例如,在下面的函数中:

def func(num1, num2=0, *args, **kwargs):
    pass

调用func函数时,必须先传入num1这个位置参数,其次可以选择传入num2这个默认参数,然后再传入可变参数args和关键字参数kwargs。例如:

func(1) # 只传入了num1这个位置参数
func(1, num2=2) # 传入num1和num2两个参数
func(1, 2, 3) # 传入num1、num2和args这个可变参数
func(1, 2, 3, a=1, b=2) # 传入num1、num2、args和kwargs这两个参数

三、传入参数的技巧

在Python函数中,有许多传入参数的技巧可以使用,下面介绍三个常用的技巧。

1、参数解包

参数解包使用*和**符号,可以将元组、列表、字典等数据结构的元素解开后作为参数传入函数中。例如:

def add(num1, num2):
    return num1 + num2

nums = [1, 2]
result = add(*nums) # 将nums中的元素解包传入add函数
print(result) # 结果为3

2、lambda函数作为参数

在Python中,lambda函数是一种匿名函数,可以使用在函数参数中,如下所示:

def operate(func, x, y):
    return func(x, y)

result = operate(lambda x, y: x*y, 2, 3)
print(result) # 结果为6

在上述代码中,lambda函数作为第一个参数传入operate函数中。在该例子中,传入的lambda函数会计算x和y的积。

3、参数默认值的设置

参数默认值的设置可以使用None来避免使用默认值。如下所示:

def operate(num1, num2, result=None):
    if result is None:
        result = 0
    # 以下为函数的计算过程
    pass

在上述代码中,函数operate在计算过程中需要使用result这个参数,如果传入的参数没有设置默认值,则result的默认值为None。因此在函数中,需要设置if result is None:的判断来避免出现None值的计算。