参考:Python中的*(星号)和**(双星号)完全详解
1*2=2
a,b,c=[1,2,3,4]
>> a=1,b=2,c=[3,4]
*在函数中主要集中在参数这个部分,既可以在定义函数的参数时用,也可以在调用函数的参数用。我们先讲解使用频率高的“在调用函数时用”
在调用函数时
使用*,其作用是帮助分配参数
。
def func2(self,x,y):
"""
接受两个参数并打印参数值
接受*或**参数,自动分配给x和y
example1:
params=(1,2)
func2(*params)
output1:
x:1
y:2
example2:
params={'x':1,'y':2}
func2(**params)
output2:
x:1
y:2
"""
print("x:",x)
print("y:",y)
func2(x=1,y=2)
#或者
func(1,2)
# 输出
>> x:1
>> y:2
params=(1,2)
# *会按顺序帮助分配
func2(*params)
# 输出
>> x:1
>> y:2
params={'x':1,'y':2}
# **会按字典key直接复制
func2(**params)
# 输出
>> x:1
>> y:2
在定义函数时
使用*,其作用是帮助收集参数
。
def func0(self,*params):
"""
接受参数(不带参数名传参),形成元组
example:
func0(1,2,3)
output:
params: (1, 2, 3)
"""
print("params:",params)
def func1(self,**params):
"""
接受参数(带参数名),形成字典
example:
func1(x=1,y=2)
output:
params: {'x': 1, 'y': 2}
"""
print("params:",params)
使用场景 | *个数 | 样例 | 含义 | 备注 |
---|---|---|---|---|
调用参数(帮助分配参数) | 1个 | func(*(3,2,4)) | 将元组实参按顺序赋值给虚参 | 虚参按顺序接受实参的值 |
2个 | func(**{‘x’:1,‘y’:2}) | 将字典实参按key赋值给虚参 | 虚参x接受实参中x的值,虚参y接受实参中y的值 | |
定义参数(帮助收集参数) | 1个 | func(*params) | 将接受的实参,组成元组给params | 实参必须不指定参数名:func(1,2,3) |
2个 | func(**params) | 将接受的实参,组成字典给params | 实参必须指定参数名:func(x=1.y=2) |
class IMG:
def __init__(self):
print("IMG实例化成功!")
def func0(self,*params):
"""
接受参数(不带参数名传参),形成元组
example:
func0(1,2,3)
output:
params: (1, 2, 3)
"""
print("params:",params)
def func1(self,**params):
"""
接受参数(带参数名),形成字典
example:
func1(x=1,y=2)
output:
params: {'x': 1, 'y': 2}
"""
print("params:",params)
def func2(self,x,y):
"""
接受*或**参数,自动分配给x和y
example1:
params=(1,2)
func2(*params)
output1:
x:1
y:2
example2:
params={'x':1,'y':2}
func2(**params)
output2:
x:1
y:2
"""
print("x:",x)
print("y:",y)