Python函数的缺省参数与可变长参数
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不是必需的,但如果使用它们,必须放在参数列表的最后。
