Python 函数参数:必需参数、默认参数、可变参数和关键字参数
Python 函数是一段可以被重复使用的代码块,用于完成特定的任务。Python 函数参数指的是在函数定义中的形参,其值由函数调用时传递的实参确定。Python 函数参数主要分为四种类型:必需参数、默认参数、可变参数和关键字参数。
1. 必需参数
必需参数也称为位置参数,指的是在函数调用时必须传入的参数,且必须按照定义顺序传入。如下面的示例代码所示,函数 add_nums() 需要传入两个参数,分别用于相加求和,如果只传入一个参数或两个参数位置颠倒,将会抛出 TypeError 异常。
示例代码:
def add_nums(a, b):
return a + b
print(add_nums(1)) # TypeError: add_nums() missing 1 required positional argument: 'b'
print(add_nums(1, 2))
print(add_nums(b=2, a=1)) # TypeError: add_nums() got an unexpected keyword argument 'b'
2. 默认参数
默认参数指的是在函数定义时指定了默认值的参数,在函数调用时可以不传入该参数,其默认值将被使用。如果传入了该参数的值,则传入的值将会覆盖默认值。如下面的示例代码所示,函数 print_info() 定义了三个参数,其中 age 和 gender 分别定义了默认值,可以在函数调用时不传入这两个参数。
示例代码:
def print_info(name, age=0, gender='unknown'):
print(f'Name: {name}, Age: {age}, Gender: {gender}')
print_info('Tom') # Name: Tom, Age: 0, Gender: unknown
print_info('Lucy', gender='female') # Name: Lucy, Age: 0, Gender: female
print_info('Jim', age=20, gender='male') # Name: Jim, Age: 20, Gender: male
3. 可变参数
可变参数指的是在函数定义时未指定参数个数,而在函数调用时可以传递任意数量的参数。可变参数在函数体中以元组形式共存。在函数定义时,在参数名前加上 *,表示该参数为可变参数。如下面的示例代码所示,函数 print_nums() 定义了一个可变参数 nums,可以传递任意数量的参数。
示例代码:
def print_nums(*nums):
print(f'nums: {nums}')
for num in nums:
print(num, end=' ')
print()
print_nums() # nums: ()
print_nums(1, 2, 3) # nums: (1, 2, 3) 1 2 3
print_nums(1, 2, 3, 4, 5) # nums: (1, 2, 3, 4, 5) 1 2 3 4 5
4. 关键字参数
关键字参数指的是在函数调用时,使用参数名和值的形式传递参数,函数中的参数名作为键,传入的值作为值。在函数定义时,在参数名前加上 **,表示该参数为关键字参数。如下面的示例代码所示,函数 print_user_info() 定义了三个参数,其中 birthday 和 hobby 分别为关键字参数,可以在函数调用时以键值对的形式传递参数。
示例代码:
def print_user_info(name, age, *, birthday, hobby='unknown'):
print(f'Name: {name}, Age: {age}, Birthday: {birthday}, Hobby: {hobby}')
print_user_info('Tom', 20, birthday='2000-01-01') # Name: Tom, Age: 20, Birthday: 2000-01-01, Hobby: unknown
print_user_info('Lucy', 25, birthday='1995-01-01', hobby='reading') # Name: Lucy, Age: 25, Birthday: 1995-01-01, Hobby: reading
print_user_info('Jim', 30, hobby='swimming', birthday='1990-01-01') # Name: Jim, Age: 30, Birthday: 1990-01-01, Hobby: swimming
总结:
Python 函数参数分为必需参数、默认参数、可变参数和关键字参数四种类型,分别用于不可缺少的参数、带默认值的参数、数量可变的参数和关键字出传递的参数。在函数调用时,需要注意传入参数的数量和顺序,并且可以根据需要使用默认值、可变参数和关键字参数来提高代码的灵活性和可读性。
