Python3中*和**运算符的四种用法详解

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

本文详细解析Python中*和**运算符的四种核心用法:算术乘法与乘方、函数定义中的不定长参数*args与**kwargs、函数调用时的序列解包以及序列解包语法。通过代码示例说明其区别与注意事项,帮助开发者准确掌握Python语法多义性。

在Python语言中,*和**符号具备语法多义性,主要涵盖以下四种应用场景。

1. 算术运算场景

*符号用于执行乘法运算。

**符号用于执行乘方(幂)运算。

>>> 2 * 5
10
>>> 2 ** 5
32

2. 函数形参定义场景

*args和**kwargs通常用于函数定义阶段。

这两个符号允许向函数传递数量不确定的参数。所谓“不定数量”,是指函数调用前无法预知具体传入的参数个数,因此在此场景下需使用这两个符号。需要注意的是,*args和**kwargs并非强制的命名规范,星号*才是语法必需部分,变量名可自定义为例如*ar和**k,但*args和**kwargs已成为业界通用的命名约定。

Python函数传递参数主要包含两种机制:

位置参数(positional argument)

关键词参数(keyword argument)

*args与**kwargs均属于可变参数,但二者存在本质区别:

*args用于接收任意数量的非关键字参数,其本质为元组(tuple)类型。

**kwargs用于接收任意数量的关键字参数,其本质为字典(dict)类型。

在函数定义中同时使用*args和**kwargs时,必须确保*args参数列表位于**kwargs参数列表之前。

>>> def fun(*args, **kwargs):
...  print('args=', args)
...  print('kwargs=', kwargs)
... 
>>> fun(1, 2, 3, 4, A='a', B='b', C='c', D='d')
args= (1, 2, 3, 4)
kwargs= {'A': 'a', 'B': 'b', 'C': 'c', 'D': 'd'}

使用*args的示例如下

>>> def fun(name, *args):
...  print('你好:', name)
...  for i in args:
...   print("你的宠物有:", i)
... 
>>> fun("Geek", "dog", "cat")
你好: Geek
你的宠物有: dog
你的宠物有: cat

使用**kwargs的示例如下

>>> def fun(**kwargs):
...  for key, value in kwargs.items():
...   print("{0} 喜欢 {1}".format(key, value))
... 
>>> fun(Geek="cat", cat="box")
Geek 喜欢 cat
cat 喜欢 box

3. 函数实参传递场景

即使函数的形参定义为固定长度参数,仍可通过*args和**kwargs进行调用,这相当于对元组或字典执行解引用操作:

>>> def fun(data1, data2, data3):
...  print("data1: ", data1)
...  print("data2: ", data2)
...  print("data3: ", data3)
... 
>>> args = ("one", 2, 3)
>>> fun(*args)
data1: one
data2: 2
data3: 3
>>> kwargs = {"data3": "one", "data2": 2, "data1": 3}
>>> fun(**kwargs)
data1: 3
data2: 2
data3: one

4. 序列解包场景

关于序列解包此前已有介绍,此处仅展示一个示例。需注意,序列解包语法中不包含**符号。

>>> a, b, *c = 0, 1, 2, 3 
>>> a 
0 
>>> b 
1 
>>> c 
[2, 3]

以上内容即为对Python3中*和**运算符的完整解析,供读者参考。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。