Python可变参数*args与关键字参数**kw原理解析

江屿
江屿
发布时间:2026-10-13 | 5人浏览过
原创

本文深入解析Python中可变参数*args和关键字参数**kw的原理与应用。通过具体代码示例,展示如何定义接收任意数量位置参数的函数,以及如何利用**kw将关键字参数封装为字典。文章涵盖函数定义规则、调用方式及输出结果,帮助开发者掌握Pythonic的参数传递技巧。

Python可变参数*args详解

可变参数

顾名思义,函数的可变参数允许传入数量可变的实参,可以是1个、2个乃至任意多个。虽然可以将这些参数封装成list或tuple后传入,但这种做法不够Pythonic。使用可变参数能更优雅地解决此类问题。需要注意的是,在函数定义中,可变参数不能置于特定参数和默认参数之前,否则可变参数会吞噬掉这些后续参数。


def report(name, *grades):
  total_grade = 0
  for grade in grades:
    total_grade += grade
  print(name, 'total grade is ', total_grade)

示例定义了一个函数,其中第一个参数为name,后续参数grades前使用了*修饰符,表明这是一个可变参数,其本质是一个可迭代对象。该函数用于接收姓名及各科成绩,并计算输出总分数。例如调用report('Mike', 8, 9),输出结果为Mike total grade is 17;若调用report('Mike', 8, 9, 10),则输出Mike total grade is 27。

Python关键字参数**kw机制

关键字参数

关键字参数允许传入0个或任意多个带有参数名的实参。这些参数名在函数定义时并未显式列出,但在函数内部会自动被封装成一个字典(dict)。


def portrait(name, **kw):
  print('name is', name)
  for k,v in kw.items():
    print(k, v)

示例定义了一个函数,接收一个位置参数name和一个关键字参数kw,后者使用了**修饰符,表明其为关键字参数。通常关键字参数应置于函数参数列表的末尾。若调用portrait('Mike', age=24, country='China', education='bachelor'),程序将按顺序处理并输出相关信息。

name is Mike age 24 country China education bachelor

通用函数参数表达形式

结合可变参数和关键字参数,任何函数均可通过universal_func(*args, **kw)的形式进行表达,从而实现通用参数的传递。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表