Python * 和 ** 的用法

*** 可以有两种用法:在表达式中使用和在函数中使用。

在表达式中

当在表达式中使用的时候,* 表示乘法;** 表示指数运算。

>> 2 * 3
6
>> 2 ** 3
8

在函数中

在函数中有两个概念:形参和实参。形参是定义函数时定义的参数名称,可以在函数实现中使用;实参是调用函数时,传递给函数的参数。

# left 和 right 是形参
def add(left, right):
  return left + right;

a = 2
b = 3
# a 和 b 是实参
c = add(a, b)

因此,*** 在函数中也有两种场景:在形参中使用和在实参中使用。

当在实参中使用时会起到解构的作用。* 会把元组或者数组这类数据按顺序解构成位置参数,而 ** 会把字典这种类型结构成关键字参数。

a = [1, 2, 3]
b = {'a': 1, 'b': 2, 'c': 3}

def add(a, b, c):
  return a + b + c

c = add(*a)
d = add(**b)

当在形参中使用是代表可以输入任意数量的参数,并且可以通过形参的名称访问这些参数。* 会把入参当作元组通过形参调用;** 会把关键字参数的入参整合为字典通过形参调用

a = 1
b = 2
c = 3

def add(**p):
  return p

def add2(*p):
  return p

add(a=1, b=2, c=3)
add2(1, 2, 3)

注意:当使用 *** 修饰形参时,要把对应的形参放到位置参数和关键字参数后面,否则会报错。

你可能感兴趣的:(Python,python,任意数量参数)