Python3 * 和 运算符

Python3 * 和 运算符在 Python 中 和具有语法多义性 具体来说是有三类用法 1 算数运算 nbsp 代表乘法代表乘方 gt gt gt 2 510 gt gt gt 25322 函数参数 args 和 kwargs 主要用于函数定义 你可以将不定数量的参数传递给一个函数 不定的意思是 预先并不知道 函数使用者会传递多少个参数给你 所以在这个场景下使用这两个关

在 Python 中,* 和 具有语法多义性,具体来说是有四类用法。

1. 算数运算

*  代表乘法

代表乘方

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

2. 函数形参

你可以将不定数量的参数传递给一个函数。不定的意思是:预先并不知道, 函数使用者会传递多少个参数给你, 所以在这个场景下使用这两个关键字。其实并不是必须写成 *args 和 kwargs。  *(星号) 才是必须的. 你也可以写成 *ar  和 k 。而写成 *args 和kwargs 只是一个通俗的命名约定。

python函数传递参数的方式有两种:

  • 位置参数(positional argument)
  • 关键词参数(keyword argument)

*args 与 kwargs 的区别,两者都是 python 中的可变参数:

  • *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]


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/223233.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午2:33
下一篇 2026年3月17日 下午2:34


相关推荐

  • java list转arraylist_进制数之间的转换方法

    java list转arraylist_进制数之间的转换方法一.Array转为List1.实现方法:java中数组转list使用Arrays.asList(T…a)方法。publicclassArray2List{publicstaticvoidmain(String[]args){List<String>listA=Arrays.asList(“dog”,”cat”,”cow”)…

    2022年8月23日
    14
  • if语句与if else if else语句与if else语句与if if if语句

    if语句与if else if else语句与if else语句与if if if语句首先我们来看前三者的使用区别 1 if 型结构是 if 某个条件 语句 使用场景 当满足这个条件时 执行某个操作 而不满足该条件时 什么都不做 在这种情况下就可以使用这种结构 2 ifelse 型 if 某个条件 语句 1 else 语句 2 使用场景 当满足这个条件时 执行某个操作 当不满足这个条件时 执行另一个操作 和 if 型区别是如果不满足条件一个执行另一个操作 而一

    2026年3月19日
    2
  • 从0到1搭建一款数据平台产品_全国大数据采集软件免费

    从0到1搭建一款数据平台产品_全国大数据采集软件免费大数据平台基础理论之数据集成篇。

    2025年12月16日
    4
  • linux某用户 计划任务,Linux计划任务管理

    linux某用户 计划任务,Linux计划任务管理Linux计划任务管理前言:在Linux操作系统中,除了用户即时执行的命令操作以外,还可以配置在指定的时间、指定的日期执行预先计划好的系统管理任务(如定期备份、定期采集监测数据)。RHEL6系统中默认已安装了at、cronie软件包,通过atd和crond这两个系统服务实现一次性、周期性计划任务的功能,并分别通过at、crontab命令进行计划任务设置。一、at命令一次性计划任务前提条件:对应的系…

    2022年7月13日
    17
  • Apache Struts2再爆高危漏洞

    Apache Struts2再爆高危漏洞60网站安全检测最新struts2命令执行漏洞分析时间:2013-07-1809:46 在struts2中,DefaultActionMapper类支持以”action:”、”redirect:”、”redirectAction:”作为导航或是重定向前缀,但是这些前缀后面同时可以跟OGNL表达式,由于struts2没有对这些前缀做过滤,

    2022年7月13日
    14
  • webstorm下载插件_webpack 插件

    webstorm下载插件_webpack 插件2016年整理了一下自己常用的webstorm插件:webstorm常用插件集合不过毕竟现在已经2020年了,常用的插件已经发生了一些变化,重新整理一下。

    2025年10月16日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号