Python3

您所在的位置:网站首页 abap变量前星号 Python3

Python3

2023-08-23 22:05| 来源: 网络整理| 查看: 265

在Python中,星号除了用于乘法数值运算和幂运算外,还有一种特殊的用法 “在变量前添加单个星号或两个星号”,实现多参数的传入或变量的拆解。

* 该位置接受任意多个非关键字(non-keyword)参数,在函数中将其转化为元组(1,2,3,4)

** 该位置接受任意多个关键字(keyword)参数,在函数 ** 位置上转化为字典 [key:value, key:value]

单星号变量

注意:单星号是无法读取到字典中的值的,只会读取到字典中的键(key),如果想读取到字典中的值,需要使用双星号(**)

12345678910111213141516171819202122232425def one(*x): print(x) print(x[0])lst=["a","b","c","d"]stri="python * char"# 在函数中将其转化为元组one(stri,lst)# outputs :# ('python * char', ['a', 'b', 'c', 'd'])# python * char# 在函数的参数传递中,对一个普通变量使用单星号前缀,# 会将这个变量拆分成单个元素one(*lst)# outputs :# ('a', 'b', 'c', 'd')# aone(*stri)# outputs:# ('p', 'y', 't', 'h', 'o', 'n', ' ', '*', ' ', 'c', 'h', 'a', 'r')# p 双星号变量

双星号会将字典首先转换成关键字参数的形式,相当于使用字典中的键作为变量名,如果键不符合变量命名规则,则会抛出一个 TypeError 异常。

1234567891011121314151617181920def one(**x): print(x) b=() for a in x.values(): b+=(a,) print(b)dect={"one":1,"two":2,"three":3}one(**dect)# outputs :# {'one': 1, 'two': 2, 'three': 3}# (1, 2, 3)# 对一个字典使用双星号前缀,就相当于将其拆分成关键字参数的形式,# **dect 等价于:# 即:双星号将接收到的所有关键字参数都保存成一个字典one(one=1,two=2,three=3)# outputs :# {'one': 1, 'two': 2, 'three': 3}# (1, 2, 3) 星号在非关键字参数(位置参数)和关键字参数的作用

同时出现”非关键字参数(位置参数)”和”关键字参数”时,使用一个单星号来分隔这两种参数。

12345678910111213141516171819def mix(a,b,*,x,y): """位置参数与关键字参数混合""" return a,b,x,ydef mix1(a,b,*c,x,y): """位置参数与关键字参数混合""" return a,b,c,x,y# 星号前面的a和b是位置参数,星号后面的x和y是关键字参数# 关键字参数一定要使用"变量名=值"的形式传入数据print(mix(1,2,x=3,y=4))# outputs:# (1, 2, 3, 4)# 如果位置参数与关键字参数之间已经存在一个单星号位置参数,# 那么这个参数后面的就都是关键字参数,不需要再使用星号来分隔print(mix1(1,2,3,4,5,x=6,y=7))# outputs :# (1, 2, (3, 4, 5), 6, 7)

函数中包含多种参数的组合,必须遵守这样的顺序:位置参数(必选参数),默认参数,单星号参数或星号分隔符,关键字参数,双星号参数。

1234567def mix(a,b=0,*c,x,**y): """位置参数与关键字参数混合""" return a,b,c,x,yprint(mix(1,2,3,4,5,x=6,y=7,z=8))# outputs:# (1, 2, (3, 4, 5), 6, {'y': 7, 'z': 8})

参考:

[Python]-12-星号变量的特殊用法



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3