- 位置参数
- 默认参数
- 可变参数
- 命名关键字参数
- 关键字参数
1 def position_only(a, b): 2 print(a, b) 3 4 def keyword(a='a', b='b'): 5 print(a, b) 6 7 def arg(a, *args): 8 print(a, args) 9 10 def kw(a, **kwargs):11 print(a, kwargs)12 13 def many1(a, b, c='c', *args, d='d', e='e', **kwargs):14 print(a, b, c, args, d, e, kwargs)15 16 def many2(a, b='b', c='c', *, d='d', e='e', **kwargs):17 print(a, b, c, d, e, kwargs)18 19 if __name__ == '__main__':20 position_only('a', 'b')21 keyword()22 keyword('b', 'a')23 keyword(b='a', a='b')24 arg('a', 'b', 'c', 'd', 'e')25 kw('a', b='b', c='c')26 many1('a', 'b', 'c', e='E', d='D', f='f', g='g')27 many2('a', 'B', 'C', f='f', g='g')
运行结果为:
a ba bb ab aa ('b', 'c', 'd', 'e')a { 'b': 'b', 'c': 'c'}a b c () D E { 'f': 'f', 'g': 'g'}a B C d e { 'f': 'f', 'g': 'g'}
因此:
- 位置参数按参数位置依次传递引用,若传入参数个数不符,则提示错误。
- 默认参数与位置参数类似,但可以指定变量名(此时可以不按顺序传入数据),若传入数据少于参数个数,则使用默认值。
- 可变参数用于处理传入数据多于参数个数的情况,默认将多余数据存入元组args。
- 命名关键字参数用于传入键值对,它与默认参数类似,但差别在于无法通过位置自动传入数据。
- 关键字参数用于处理传入键值对不属于默认参数和关键字参数的情况,默认将多余键值对存入字典kwargs。
注意:
传入参数的顺序必须为1-5,若*args不存在,可加入*参数,以区分默认参数和命名关键字参数。