当前位置 博文首页 > 孤寒者的博客:一节课让你彻底搞懂python中的单星号(*)和双星
引言——同学们是不是经常可以在python的函数中看到输入的参数前面有一个或者两个星号(如下图:),却不是很明白他们的作用。那么今天这节课就来带领大家深入探讨一下。
def function1(param1, *param2):
def function2(param1, **param2):
其实这俩的用法都是用来将任意个数的参数传入到python函数中,但是它们两个的应用场景及某些细分的作用又有所不同哦!
上代码1:
def fun1(*args): #*可以接收任意多个
print(args) #此处的args又把接收的任意多个数据放为一个整体:元组中
fun1(1,2,3,4,5,6,6)
# 输出为:(1, 2, 3, 4, 5, 6, 6)
上代码2:
# 单星号的使用:
def fun3(world,*value): # 注意使用单星号的参数要放在其他参数之后!
print(world)
print(value)
fun3('cool',1,2,3,4,5,6,1,7,8,98)
# 输出为:cool
# (1, 2, 3, 4, 5, 6, 1, 7, 8, 98)
上代码1:
#拆包
def fun1(*args): #*可以接收任意多个
print(args) #此处的args又把接收的任意多个数据放为一个整体:元组中
print(*args) #此处的*又把args接收的那个元组整体拆分为一个一个的
fun1(1,2,3,4,5,6,6)
# 输出为:(1, 2, 3, 4, 5, 6, 6)
# 1 2 3 4 5 6 6
上代码2:
def myprint(x, y):
print(x)
print(y)
params=(1,2)
myprint(*params)
# 输出为:1
# 2
上代码1:
def fun2(**kwargs):
print(kwargs)
fun2(a = 1 , b = 2) #因为上面有**,所以把参数a = 1和b = 2转换为{}的形式
# 输出为:{'a': 1, 'b': 2}
上代码2:
## 双星号(**)的使用:
def function(key, **kwargs):
print(key)
print(kwargs)
function('aaa', a = 1, b = 2, c = 3)
# 输出为:aaa
# {'a': 1, 'b': 2, 'c': 3}
上代码1:
def myprint(x, y):
print(x)
print(y)
params={'x':1,'y':2}
myprint(**params) # 此句等同于: myprint(x = 1, y = 2)
# 输出为:1
# 2
上代码2:
def fun2(**kwargs):
print(kwargs)
fun2(a = 1 , b = 2) #因为上面有**,所以把a = 1和b = 2的形式转换为{}的形式
fun2(**{'a':1, 'b': 2}) #把{}的形式拆包为 a = 1, b = 2的形式,此方法等同上一句代码,但是可以直接传字典格式数据而不用特意改变了!
# 输出为:{'a': 1, 'b': 2}
# {'a': 1, 'b': 2}
# 小知识点:
# a = 1 < ==== > {'a':1} 可以相互转换
# *和**的混合使用:
def fun4(*name,**value):
print(name)
print(value)
fun4('key', 'beautiful', a = 1, b = 2)
# 输出为:('key', 'beautiful')
# {'a': 1, 'b': 2}
a = [ [7, 17146.16129032258], [8, 26092.645161290322], [9, 26865.633333333335], [10, 35460.67741935484], [11, 51436.166666666664]]
# *a的作用将变量a拆包为一个个的列表;
print(*a)
# zip()函数的作用是:将对象逐一配对,*zip()的作用就是拆包:将一一对应的5个列表数据拆分为一一对应的两个列表数据!
x_unique, y_mean = [*zip(*a)]
print(x_unique)
print(type(x_unique))
print(y_mean)
print(type(y_mean))
cs