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

Python函数的缺省参数与可变长参数

发布时间:2023-06-17 11:44:04

Python是一种高级编程语言,以其简单、易学、高效及具有广泛应用等特点,受到广大程序员的喜爱。在Python中,函数是一种非常重要的编程元素,函数的缺省参数与可变长参数是函数的两个重要特性。在本文中,我们将对这两个特性进行详细的介绍。

一、Python函数的缺省参数

所谓Python函数的缺省参数,就是在定义函数时,为其中某个参数指定一个默认值。当函数调用时,如果该参数没有传入实际值,那么该参数就会取其默认值作为实际值。以下是一个简单的示例:

def greeting(name, message = "Hello, "):
    print(message + name)

在上面的例子中,定义了一个函数greeting,该函数有两个参数name和message。其中,message被指定一个默认值"Hello, ",如果函数调用时没有为该参数传入实际值,那么它就会取默认值,即"Hello, "。

下面是该函数的示例调用:

greeting("Tom") # 输出:"Hello, Tom"
greeting("Jerry", "Hi, ") # 输出:"Hi, Jerry"

在第一次调用greeting函数时,由于没有传入message参数,故message取默认值"Hello, "。在第二次调用中,传入了实际值"Hi, ",故message取实际值"Hi, "。

Python函数的缺省参数有如下注意事项:

1. 缺省参数必须放在参数列表的最后,且按照从左到右的顺序。

2. 函数定义时,缺省参数的值是在编译期间确定的,而不是在运行期间。

3. 函数调用时,可以根据实际需要覆盖缺省参数的默认值。

二、Python函数的可变长参数

所谓Python函数的可变长参数,就是在定义函数时,允许函数接收任意个数的参数。在Python中,可变长参数有两种:*args和**kwargs。

1. *args

在Python中,*args表示收集所有位置参数,并将它们打包成一个元组传递给函数。以下是一个简单的示例:

def sum(*args):
    result = 0
    for arg in args:
        result += arg
    return result

在上面的例子中,定义了一个函数sum,该函数使用*args表示收集所有位置参数。该函数的作用是计算其所有参数的和。以下是该函数的调用示例:

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

在上面的调用中,传入了5个位置参数,这5个参数被*args收集,并打包成元组传递给函数。该函数针对元组逐个累加,最终得到结果15并返回。

2. **kwargs

在Python中,**kwargs表示收集所有关键字参数,并将它们打包成一个字典传递给函数。以下是一个简单的示例:

def info(name, age, **kwargs):
    print("name:", name)
    print("age:", age)
    print("other information:")
    for k, v in kwargs.items():
        print(k, ":", v)

在上面的例子中,定义了一个函数info,该函数使用**kwargs表示收集所有关键字参数。该函数的作用是输出指定人员的基本信息和其它信息。以下是该函数的调用示例:

info("Tom", 18, gender = "male", tel = "13812345678", email = "tom@qq.com")

在上面的调用中,指定了位置参数name和age,并传入了3个关键字参数gender、tel、email,这些关键字参数被**kwargs收集,并打包成字典传递给函数。在函数中,通过遍历字典输出其中的元素。

Python函数的可变长参数有如下注意事项:

1. 可变长参数可以与位置参数、缺省参数一同使用,但必须放在它们后面。

2. *args表示收集所有位置参数,**kwargs表示收集所有关键字参数。

3. *args和**kwargs不是必需的,但如果使用它们,必须放在参数列表的最后。