函数定义中从形式上看存在四种形式的参数:
位置参数:1
2
默认参数:```def tupleSqeArgs([arg1,[arg2,]] arg3='defaultB')
元组参数:1
2
字典参数:```def dictVarArgs([arg1, [arg2='defaultB', [*nkw,]]] **kw)
[]内的内容是可选的。
按照python核心编程中的定义,参数的分类是这样的
- 形式参数
- 位置参数
- 默认参数
- 可变长度的参数
- 非关键字可变长参数(元组)
- 关键字变量参数(字典)
感觉读起来是不是很绕口且不容易记忆(反正我记不着后面两个),本文结合自己的一些实验,按照自己的记忆和学习习惯,将python函数的参数重新分为如下三类:
- 位置参数
- 元组参数
- 关键词参数
Note:Python的函数参数需要从函数定义和函数调用两个方向理解。
1 位置参数
调用时需要按照函数定义中参数的出现顺序进行调用。
默认参数:一种特殊的位置参数:默认参数必须出现在位置参数之后,函数调用时可以不对默认参数传值。
1 | def tupleSqeArgs(arg1,arg2, arg3='defaultB'): |
调用方式如下:
1 | tupleSqeArgs(1,2) |
2 元组参数(Tuple)
元组保存了所有传递给函数的”额外”的参数(匹配了所有位置和具名参数后剩余的)。函数定义中,所有的元祖参数必须在位置参数之后,且只能有一个。
1 | def tupleVarArgs(arg1, arg2='defaultB', *nkw): |
调用方法如下:
1 | tupleVarArgs('abc') #len(nkw) == 0 |
3 关键词参数(Dictionary)
在我们有不定数目的或者额外集合的关键字的情况中, 参数被放入一个字典中,字典中键为参数名,值为相应的参数值。
1 | def dictVarArgs(arg1, arg2='defaultB', **kw): |
调用方式为:
1 | dictVarArgs(1220, 740.0, c='grail') |
4 位置参数&元组参数&关键词参数共同出现时
1 | def dictVarArgs(arg1, arg2='defaultB',*nkw, **kw): |
合法的调用方法如下:
1 | dictVarArgs(123, 567,'tales', 'mys',c=123, d='poe') |
非法调用如下:
1 | dictVarArgs(123, arg2=567,'tales', 'mys',c=123, d='poe') |