【python】函数调用的参数规则、位置参数、关键参数、任意参数与解包

Python 的函数在声明参数时大概有下面 四 种形式:

  • 不带默认值的:def func(a): pass ;a就是不带默认值的参数,也叫位置参数
  • 带有默认值的:def func(a, b=1): pass ;b是带默认值的参数 ,也叫关键参数
  • 任意位置参数:def func(a, b=1, *c): pass ;c是任意位置参数
  • 任意键值参数:def func(a, b=1, *c, **d): pass;d是任意键值对参数,一般传入字典包

在调用函数时,有两种情况:

  • 没有关键词的参数:func(“G”, 20)
  • 带有关键词的参数:func(a=“G”, b=20)(其中带有关键词调用可以不考虑顺序:func(b=20, a=“G”)

1、当不带默认值的参数和带默认值的参数混合在一起时,调用该函数时,可以不对带默认值的参数赋值,此时会将带默认值得数值传递下去;如果给参数重新赋值,那么定义的函数的默认值会被重写;

2、当给函数的参数赋值时,一定要遵循顺序:位置参数不能在关键词参数之后出现,初中英语知识此时就会出现上式中语法错误;如果都带上关键词后可以不用考虑该顺序。

因此最保险的做法是全部使用关键参数

任意参数
任意参数可以接受任意数量的参数,其中*a的形式代表任意数量的位置参数**d代表任意数量的关键词参数

在 Python 3.0 中,这里的关键词函数必须明确指明,不能通过位置推断。

**d则代表任意数量的关键词参数

Unpacking
*a、**d可以在函数参数之外使用:

所谓的解包(Unpacking)实际上可以看做是去掉()的元组、列表或者是去掉{}的字典。这一语法也提供了一个更加 Pythonic 地合并字典的方法:

posted @ 2018-11-27 14:36  赵莉  阅读(1012)  评论(0编辑  收藏  举报
友情链接:回力鞋 | 中老年服装 | 新航道雅思 | 雅思培训机构 | SAT培训 | www.chat845.com