Python函数传参的多种方式

168 阅读2分钟

Python 函数传参支持 位置参数、默认参数、关键字参数、可变位置参数和可变关键字参数。

  1. 位置参数(Positional Arguments) 位置参数是最常见的传参方式,调用函数时按照函数定义的参数顺序传递值。
def func(name, message):
    print(f"Hello, {name}! {message}")

func("zxc", "你好")  # 输出 "Hello, zxc! 你好"
  1. 默认参数(Default Arguments) 默认参数允许在函数定义时为参数设置默认值,调用函数时可以不传递该参数的值。
def func(name, message="你好"):
    print(f"Hello, {name}! {message}")

func("zxc")  # 输出 "Hello, zxc! 你好"
func("qwe", "最近咋样?")  # 输出 "Hello, qwe! 最近咋样?"
  1. 关键字参数(Keyword Arguments) 关键字参数允许调用函数时显式指定参数名和值,这样可以不按照参数定义的顺序传递值。
def func(name, message):
    print(f"Hello, {name}! {message}")

func(message="你好", name="zxc")  # 输出 "Hello, zxc! 你好"
  1. 可变位置参数(*args) 可变位置参数允许函数接受任意数量的位置参数。在函数定义中使用 *args,args 是一个元组,包含了所有传递给函数的多余位置参数。
def sum_all(*args):
    return sum(args)

print(sum_all(1, 2, 3, 4, 5))  # 输出 15
  1. 可变关键字参数(**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}"