|
- 位置参数
def foo(x,y,z):
print(x,y,z)
foo(1,2,3) 实参位置和形参位置一一对应
- 关键字参数:
def foo(x,y,z)
print(x,y,z)
foo(z=3,y=1,x=4)
foo(1,z=3,y=5)
注意点:
1. 关键字实参必须在未知实参后面
2. 不能重复对一个形参传值
- 默认参数
def reg(name,age,sex='male'):
print(name,age,sex)
注意点:
1. 定义函数时,默认参数必须在非默认参数之后
2. 默认参数在定义阶段智能赋值一次
3. 默认参数通常定义成不可变类型
- 可变长参数,
1. *会把溢出的按位置定义的实参都接受,以元组形式赋值给args
def foo(x,y,*args):
print(x,y)
print(args)
foo(1,2,3,4,5,6)
输出:
1 2
(3,4,5,6) tuple形式
2. def foo(x,y,**kwargs):**会把溢出的按关键字定义的实参都接收,以字典的形式赋值给kwargs
print(x,y)
print(kwargs)
foo(1,2,c=2,name='lh',age=18)
输出:
1 2
{'c': 2, 'name': 'lh', 'age': 18}
例子:
def foo(name,age=10,*args,sex='male',height,**kwargs):
print(name)
print(age)
print(args)
print(sex)
print(height)
print(kwargs)
foo('alex',1,2,3,4,5,sex='female',height='150',a=1,b=2,c=3)
输出:
alex
1
(2, 3, 4, 5)
female
150
{'c': 3, 'a': 1, 'b': 2}
def foo(x,y,z):
print('from foo',x,y,z)
def wrapper(*args,**kwargs):
print(args)
print(kwargs)
foo(*args,**kwargs)
# wrapper(1,2,3,a=1,b=2)
wrapper(1,z=2,y=3)
输出:
(1,)
{'z':z,'y':3}
from foo 1 3 2 |
|