python之*的用法

  • 1、乘法作用
  • 2、收集多余值
  • 3、在函数中的作用(重点)
    • 3.1 在调用函数时使用
      • 3.1.0 如果按正常调用函数,则:
      • 3.1.1 如果使用一个*帮助传参,则按顺序赋值:
      • 3.1.2 如果使用两个*帮助传参,则按字典key值赋值:
    • 3.2 在定义函数时使用
      • 3.2.1 使用一个*定义虚参
      • 3.2.2 使用两个*定义虚参
  • 4、总结

参考:Python中的*(星号)和**(双星号)完全详解

1、乘法作用

1*2=2

2、收集多余值

a,b,c=[1,2,3,4]
>> a=1,b=2,c=[3,4]

3、在函数中的作用(重点)

*在函数中主要集中在参数这个部分,既可以在定义函数的参数时用,也可以在调用函数的参数用。我们先讲解使用频率高的“在调用函数时用”

3.1 在调用函数时使用

调用函数时使用*,其作用是帮助分配参数

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)

3.1.0 如果按正常调用函数,则:

func2(x=1,y=2)
#或者
func(1,2)

# 输出
>> x:1
>> y:2

3.1.1 如果使用一个*帮助传参,则按顺序赋值:

params=(1,2)

# *会按顺序帮助分配
func2(*params)

# 输出
>> x:1
>> y:2

3.1.2 如果使用两个*帮助传参,则按字典key值赋值:

params={'x':1,'y':2}

# **会按字典key直接复制
func2(**params)

# 输出
>> x:1
>> y:2

3.2 在定义函数时使用

定义函数时使用*,其作用是帮助收集参数

3.2.1 使用一个*定义虚参

def func0(self,*params):
        """
        接受参数(不带参数名传参),形成元组
        example:
            func0(1,2,3)
        output:
            params: (1, 2, 3)
        """
        print("params:",params)

3.2.2 使用两个*定义虚参

def func1(self,**params):
        """
        接受参数(带参数名),形成字典
        example:
            func1(x=1,y=2)
        output:
            params: {'x': 1, 'y': 2}
        """
        print("params:",params)

4、总结

使用场景 *个数 样例 含义 备注
调用参数(帮助分配参数) 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)

你可能感兴趣的:(Python,python,开发语言)