python传参*和**的区别

  1. def f(*a),向def f(*a)是以tuple或者list的形式传输,在函数内部是以tuple的形式来进行处理,所以调用的时候,需要先组装出一个list或tuple,输入单个数字等按照tuple处理。定义可变参数和定义list或tuple参数相比,仅仅在参数前面加了一个*号。在函数内部,参数numbers接收到的是一个tuple,因此,函数代码完全不变。但是,调用该函数时,可以传入任意个参数,包括0个参数。
  2. 在 def f(**a)中,可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。
  3. 两种类型简化处理方法:*a的形式
    >>> nums = [1, 2, 3]
    >>> calc(*nums)
    14
  4. **a的形式
    >>> kw = {'city': 'Beijing', 'job': 'Engineer'}
    >>> person('Jack', 24, **kw)
    name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}

    参考文章:https://www.cnblogs.com/gongyu2018/p/8805183.html

2019-09-09  21:17:54

原文地址:https://www.cnblogs.com/ybl20000418/p/11494324.html