在Python中,函数参数的类型可以是以下几种:
-
位置参数(Positional Arguments):
位置参数是最常见的函数参数类型,它们按照函数定义时参数的顺序来传递。当你调用一个函数时,你需要按照函数参数列表的顺序传递参数值,这些参数值会依次赋给函数定义时的位置参数。def greet(name, age):print(f"Hello, {name}! You are {age} years old.")greet("Alice", 30)
-
关键字参数(Keyword Arguments):
关键字参数允许你按照参数名称来传递参数值,而不需要关心参数的顺序。在函数调用时,你可以指定参数的名称,将参数值传递给对应的参数。def greet(name, age):print(f"Hello, {name}! You are {age} years old.")greet(age=30, name="Alice")
-
默认参数(Default Arguments):
默认参数允许你为函数的某些参数指定默认值,如果调用函数时没有提供对应的参数值,则使用默认值。def greet(name, age=30):print(f"Hello, {name}! You are {age} years old.")greet("Alice") # 如果没有提供 age 参数,则使用默认值 30
-
可变参数(Variable Arguments):
可变参数允许你在调用函数时传递不定数量的参数。在Python中,有两种类型的可变参数:*args 和 **kwargs。*args
:用于接收不定数量的位置参数,它将所有传递的位置参数放在一个元组中。**kwargs
:用于接收不定数量的关键字参数,它将所有传递的关键字参数放在一个字典中。
def greet(*names):for name in names:print(f"Hello, {name}!")greet("Alice", "Bob", "Charlie")
如果已经有一个list或者tuple,要调用一个可变参数怎么办?可以这样做:
>>> nums = [1, 2, 3]
>>> calc(nums[0], nums[1], nums[2])
这种写法当然是可行的,问题是太繁琐,所以Python允许你在list或tuple前面加一个*号,把list或tuple的元素变成可变参数传进去:
>>> nums = [1, 2, 3]
>>> calc(*nums)
*nums表示把nums这个list的所有元素作为可变参数传进去。这种写法相当有用,而且很常见。