Python 函数传参支持 位置参数、默认参数、关键字参数、可变位置参数和可变关键字参数。
- 位置参数(Positional Arguments) 位置参数是最常见的传参方式,调用函数时按照函数定义的参数顺序传递值。
def func(name, message):
print(f"Hello, {name}! {message}")
func("zxc", "你好") # 输出 "Hello, zxc! 你好"
- 默认参数(Default Arguments) 默认参数允许在函数定义时为参数设置默认值,调用函数时可以不传递该参数的值。
def func(name, message="你好"):
print(f"Hello, {name}! {message}")
func("zxc") # 输出 "Hello, zxc! 你好"
func("qwe", "最近咋样?") # 输出 "Hello, qwe! 最近咋样?"
- 关键字参数(Keyword Arguments) 关键字参数允许调用函数时显式指定参数名和值,这样可以不按照参数定义的顺序传递值。
def func(name, message):
print(f"Hello, {name}! {message}")
func(message="你好", name="zxc") # 输出 "Hello, zxc! 你好"
- 可变位置参数(*args) 可变位置参数允许函数接受任意数量的位置参数。在函数定义中使用
*args,args 是一个元组,包含了所有传递给函数的多余位置参数。
def sum_all(*args):
return sum(args)
print(sum_all(1, 2, 3, 4, 5)) # 输出 15
- 可变关键字参数(**kwargs) 可变关键字参数允许函数接受任意数量的关键字参数。在函数定义中使用
**kwargs,kwargs 是一个字典,包含了所有传递给函数的多余关键字参数。
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_info(name="zxc", age=30, job="码农") # 输出 "name: zxc", "age: 30", "job: 码农"
这些传参方式可以组合使用,但需要注意的是,位置参数必须出现在关键字参数之前,可变位置参数 *args 必须出现在可变关键字参数 **kwargs 之前。
def func(a, b=10, *args, **kwargs):
print(f"a: {a}, b: {b}, args: {args}, kwargs: {kwargs}")
func(1, 2, 3, 4, 5, x=10, y=20) # 输出 "a: 1, b: 2, args: (3, 4, 5), kwargs: {'x': 10, 'y': 20}"