栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【Coding】*与**运算符在python中的应用示例

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Coding】*与**运算符在python中的应用示例

在python基础环境中,*与**具有语法多义性,具体可以归结为以下四类:

1. 算数运算

*:乘法,**:乘方,次幂。

>>> 2*3
6
>>> 2**3
8
2. 函数形参

*args和**kwargs主要用于函数定义。

我们可以将不定熟练地过参数传递给一个函数,不定的意思是:预先并不知道,函数会传递给函数多少参数,所以在该场景下使用上述两个关键词。args和kwargs并不是写死的,但是*和**号是必须的,知识约定俗成写成 *args 和 **kwargs 。

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

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

*args 和 **kwargs 两者都是python中的可变参数,他们的区别如下:

  • *args 表示任何多个无名参数,本质是一个tuple,e.g. (1,2,3)
  • **kwargs 表示关键字参数,本质是一个dict,e.g. {‘a’:1,‘b’:2}

如果同时使用*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. 序列解包

只有*运算符,没有**运算符,详情可见Python3 序列解包。

>>> s = 'ABCDEFGH'
>>> while s:
...     x, *s = s
...     print(x, s)
... 
A ['B', 'C', 'D', 'E', 'F', 'G', 'H']
B ['C', 'D', 'E', 'F', 'G', 'H']
C ['D', 'E', 'F', 'G', 'H']
D ['E', 'F', 'G', 'H']
E ['F', 'G', 'H']
F ['G', 'H']
G ['H']
H []
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/286751.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号