一、基础参数类型
在Python中,函数参数类型有普通参数、默认参数、可变参数和关键字参数四种类型。其中最基础的是普通参数,也就是通过位置传递参数的方式,直接传入函数中即可使用。
def add(a, b): return a + b print(add(1, 2)) # 输出3
在这个例子中,add
函数的参数是a
和b
,通过在函数调用时传入两个参数1
和2
,add
函数将返回两数之和3
。
二、默认参数
默认参数是指在定义函数时,给某个参数设置默认值,在调用函数时如果没有传入该参数,则会使用默认值。
def greet(name, message="Hello"): print(f"{message}, {name}!") greet("Alice") # 输出Hello, Alice! greet("Bob", "Hi") # 输出Hi, Bob!
在这个例子中,greet
函数有两个参数name
和message
,其中message
的默认值为"Hello"
。当调用greet("Alice")
时,函数将使用默认值输出Hello, Alice!
,而当调用greet("Bob", "Hi")
时,函数会使用传入的"Hi"
输出Hi, Bob!
。
三、可变参数
可变参数允许函数在声明时不确定传入参数的数量。在Python中,可变参数一共有两种类型:可变位置参数和可变关键字参数。
1. 可变位置参数
可变位置参数使用*
号来声明。在函数中,可变位置参数被视为一个元组,这个元组包含了传入函数的所有位置参数。
def add(a, b, *args): for arg in args: a += arg return a + b print(add(1, 2, 3, 4)) # 输出10
在这个例子中,add
函数有三个参数a
、b
和*args
。当调用add(1, 2, 3, 4)
时,函数将使用1
和2
作为a
和b
的值,并将剩余的参数3
和4
作为一个元组传递给*args
,函数将使用循环计算出所有参数的总和并返回。
2. 可变关键字参数
可变关键字参数使用**
号来声明。在函数中,可变关键字参数被视为一个字典,这个字典包含了所有传入函数的关键字参数。
def print_info(name, age, **kwargs): print(f"Name: {name}, Age: {age}") if "city" in kwargs: print(f"City: {kwargs['city']}") if "job" in kwargs: print(f"Job: {kwargs['job']}") print_info("Alice", 25, city="New York", job="Engineer") # 输出Name: Alice, Age: 25 # 输出City: New York # 输出Job: Engineer
在这个例子中,print_info
函数有三个参数name
、age
和**kwargs
。当调用print_info("Alice", 25, city="New York", job="Engineer")
时,函数将使用"Alice"
和25
作为name
和age
的值,并将剩余的参数{"city": "New York", "job": "Engineer"}
作为一个字典传递给**kwargs
,函数将使用if
语句判断字典中是否包含"city"
和"job"
关键字,并输出相应的值。
四、关键字参数
关键字参数使用=
号来指定参数的名字。这种方式允许函数在调用时指定参数名,而不需要按照位置顺序传递参数。
def greet(name, message): print(f"{message}, {name}!") greet(message="Hi", name="Alice") # 输出Hi, Alice!
在这个例子中,greet
函数有两个参数name
和message
。当调用greet(message="Hi", name="Alice")
时,函数将使用"Alice"
和"Hi"
作为name
和message
的值,并输出Hi, Alice!
。