python基础 — 位置参数和关键字参数

1、参数种类

  • 形参:定义函数时的参数,如定义函数def func(a,b)的参数a,b是形参。
  • 实参:调用函数时的值,如调用函数func(2,3)的参数2,3是实参。
  • 位置参数:调用函数时传入实际参数的数量和位置都必须和定义函数时保持一致。
  • 关键字参数:调用函数的时候使用的是键值对的方式,key=values。混合传参时关键字参数必须在位置参数之后。
  • 默认参数:定义函数时,直接给形式参数指定一个默认值。调用函数的时候如果没有传入实参,则取默认参数。如果传入实参,则取实参。
  •  *args 和 **kwargs 参数

 

2、位置参数

(1) 位置参数正常调用

# 自定义函数
def func(a, b):
    print(a ** b)

# 正常调用
func(2,3)

------------------------------------------------------------------
运行结果:
8

  2 ** 3 =2*2*2=8

(2)实参和形参数量必须一致

如果实参和形参数量不一致会报语法错误,如调用func函数的时候只传入一个实参的结果

# 自定义函数
def func(a, b):
    print(a ** b)

# 实参和形参数量必须一致
func(2)

----------------------------------------------------------------------
运行结果:
TypeError: func() missing 1 required positional argument: 'b'

同理,多传入参数也会报 TypeError

(3)实参和形参位置必须一致

# 自定义函数
def func(a, b):
    print(a ** b)


# 实参和形参位置必须一致
func(2, 3)
func(3, 2)

-----------------------------------------------------------------------
运行结果:
8
9

2 ** 3 = 2*2*2 = 8

3 ** 2 = 3*3 = 9

分析结果可知,形参和实参的位置必须一致,func(2,3)和func(3,2)是不一样的。

 

3、关键字参数

(1)关键字参数的正常调用

# 自定义函数
def func(a, b):
    print(a ** b)

# 正常调用
func(a=2, b=3)
func(b=3,a=2)

----------------------------------------------------------
运行结果:
8
8

 上面的例子我们很容易得出结论,不再需要与形参的位置完全一致,只要将参数名写正确即可。

(2)关键字参数和位置参数的混合使用

# 自定义函数
def func(a, b):
    print(a ** b)

func(2, b=3)

-------------------------------------------------------------------------
运行结果:
8
# 自定义函数
def func(a, b):
    print(a ** b)


func(a=2, 3)

--------------------------------------------------------------------------------
运行结果:
SyntaxError: positional argument follows keyword argument

 上面的例子我们很容易得出结论,关键字参数可以和位置参数混合使用,但是关键字参数必须在位置参数之后,否则会报语法错误SyntaxError 。

3、默认参数

# 自定义函数,有默认值的参数必须位于所有没默认值参数的后面
def func(a, b=3):
    print(a ** b)

# 默认参数
func(2)
func(2,1)

-----------------------------------------------------------------------
运行结果:
8
2

分析结果可知,对应默认参数,调用函数的时候如果没有传入实参,则取默认参数。如果传入实参,则取实参。


版权声明:本文为panc_guizaijianchi原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。