函数参数有 4 种:
必填参数: 填入规定数量的参数, 不能多, 也不能少.
默认参数: 把某位参数设置为默认值, 这样在不输入的情况下, 按默认值传递; 即此参数可以不输入.
可变参数: 参数可以任意给多少个都行. 习惯使用 * args 表示;*arg 传入的是 tuple.
关键字参数:= 默认参数 + 可变参数. 习惯使用 **kw 表示;**kw 传入的是 dict.
一, 必填参数
- def cal(x, y):
- t = x + y;
- return t;
二, 默认参数
- def cal(x, y = 0):
- t = x + y ;
- return t;
三, 可变参数
- #once way
- def cal(number) #number 为 list / tuple ---> cal([1, 2, 3, 4])
- sum = 0;
- for n in number:
- sum = sum + n; #累加
- return sum;
- #twice way
- tup = set(1, 2, 3)
- def cal(*number) #number 为 tuple ---> cal(tup)
- sum = 0;
- for n in number:
- sum = sum + n; #累加
- return sum;
- #other way
- tup = set(1, 2, 3)
- def cal(*number) #number 为 tuple ---> cal(tup[0], tup[1], tup[2])
- sum = 0;
- for n in number:
- sum = sum + n; #累加
- return sum;
四, 关键字参数
- #once way
- def person(name, age, **kw)
- print "name:%s"%name, print "age:",age, print "other:" kw
也可以传入任意个数的关键字参数:
- >>> person('Adam', 45, gender='M', job='Engineer')
- name: Adam age: 45 other: {'gender': 'M', 'job': 'Engineer'}
先组装出一个 dict, 然后, 把该 dict 转换为关键字参数传进去:
- >>> kw = {'city': 'Beijing', 'job': 'Engineer'}
- >>> person('Jack', 24, city=kw['city'], job=kw['job'])
- name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}
简化的写法:
- >>> kw = {'city': 'Beijing', 'job': 'Engineer'}
- >>> person('Jack', 24, **kw)
- name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}
五, 组合
组合顺序: 必填参数, 可选参数, 可变参数, 关键字参数
deffunc(a, b, c=0, *args, **kw):
- print 'a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw
- >>> func(1, 2)
- a = 1 b = 2 c = 0 args = () kw = {}
- >>> func(1, 2, 3, 'a', 'b', x=99)
- a = 1 b = 2 c = 3 args = ('a', 'b') kw = {'x': 99}
- >>> args = (1, 2, 3, 4)
- >>> kw = {'x': 99}
- >>> func(*args, **kw)
- a = 1 b = 2 c = 3 args = (4,) kw = {'x': 99}
程序参考于 https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001374738449338c8a122a7f2e047899fc162f4a7205ea3000
来源: http://www.bubuko.com/infodetail-2687270.html