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

Python函数参数:位置参数、关键字参数、默认参数与可变参数

发布时间:2023-06-20 23:45:02

Python的函数参数可以分为位置参数、关键字参数、默认参数与可变参数四类,不同的参数类型在函数中有不同的作用和使用方式,下面将分别介绍这四种参数。

一、位置参数

位置参数是指在函数定义时,参数的顺序是固定的,调用函数时必须按照顺序传入相应的参数。例如:

def power(x, n):
    result = 1
    while n > 0:
        result = result * x
        n = n - 1
    return result

print(power(2,3))  # 输出 8

在这个例子中,power 函数有两个位置参数 xn,按照顺序传入的数值分别代表底数和指数,当传入 23 时,函数计算出 23 次方,返回结果 8

二、关键字参数

关键字参数是指在函数调用时,指定参数的名称,这样可以不按照顺序传入参数。例如:

def power(x, n):
    result = 1
    while n > 0:
        result = result * x
        n = n - 1
    return result

print(power(n=3,x=2))  # 输出 8

在这个例子中,power 函数的参数名是 xn,当使用关键字参数调用函数时,可以按照任意顺序指定参数名和值,此时参数顺序不再是必要的。

三、默认参数

默认参数是指在函数定义时,为参数提供一个默认值,如果在调用函数时没有传入该参数,则使用默认值。例如:

def power(x, n=2):
    result = 1
    while n > 0:
        result = result * x
        n = n - 1
    return result

print(power(2))     # 输出 4
print(power(2,3))   # 输出 8

在这个例子中,power 函数的第二个参数 n 默认为 2,如果调用函数时只传入了一个参数 x,则 n 的值会默认为 2。当调用函数时手动指定 n 的值时,则会覆盖默认值,例如 power(2,3) 调用时,n 的值被指定为 3

四、可变参数

可变参数是指在函数定义时,用 *** 操作符接收不定数量的参数,其中 * 表示接收任意数量的位置参数,而 ** 表示接收任意数量的关键字参数。例如:

# 不定数量的位置参数
def nums(*args):
    print(args)

nums(1,2,3,4,5)   # 输出 (1,2,3,4,5)

# 不定数量的关键字参数
def user_info(**kwargs):
    print(kwargs)

user_info(name='Bob', age=20, gender='male')  # 输出 {'name':'Bob', 'age':20, 'gender':'male'}

在这个例子中,nums 函数使用了 * 操作符来接收不定数量的位置参数,当调用函数时传入任意数量的参数时,参数将会被打包成元组传入函数中,可以通过 args 访问这些参数。与此相似,user_info 函数使用了 ** 操作符来接收不定数量的关键字参数,当调用函数时传入任意数量的关键字参数时,参数将会被打包成字典传入函数中,可以通过 kwargs 访问这些参数。

总结

函数参数在 Python 中有四种形式:位置参数、关键字参数、默认参数和可变参数,它们分别用于不同的情况下。位置参数依赖于参数顺序,适用于只需要传入少量参数的情况。关键字参数按照参数名传入,适用于需要传入多个参数且有些参数可能不需要的情况。默认参数提供了参数的默认值,简化了函数的调用方式。可变参数则可以接收任意数量的参数,方便了函数的复用。因此,在函数中正确选择参数类型,可以使函数更加灵活、易用。