py10-函数参数
1、函数的参数
1、形参即变量名
2、实参即变量值,函数调用则将值绑定到名字上,函数调用结束,解除绑定。
2、形参特点
定义函数时,括号内的参数成为形参,形参就是变量名。
3、实参特点
在调用函数时,括号内的参数成为实参,实参就是变量值。在调用阶段实参(变量值)才会绑定形参(变量名)。
4、具体应用
位置参数:按照从左到有右的顺序定义的参数。
位置形参:必选参数,必须被传值,并且多一个不行,少一个也不行
位置实参:按照位置给形参传值,与形参按照位置一一对应
关键字参数:按照key=value的形式定义实参
无需按照位置为形参传值
注意的问题:
1、关键字实参必须在位置实参后面
2、对同一个形参不能重复传值
5、示例:
1、位置实参,参照物是形参不变
def foo(name,age): print(name) print(age) foo('egon',18)
2、关键字实参
def foo(name,age): print(name) print(age) foo(age=18,name='egon')
按照key=value的形式,指名道姓传值
6、关键字实参注意的问题
1、位置实参必须在关键字实参的前面
2、一定不要对同一个形参传多次值
7、函数的默认参数
默认参数指的是默认形参,在定义阶段就已经为形参赋值,意味着在调用阶段可以不用传值。
实例:
def foo(x,y=1): print(x) print(y) foo(1)
#y可以不被传值
def foo(x,y=1): print(x) print(y) foo(1,y=3)
#可以传值
位置形参:经常发生变化的,定义成位置形参
默认形参:不经常发生变化,定义为默认形参
def register(name,age,sex='male'): print(name,age,sex) register('esb',18) register('oldboy',38) register('jingjing',28,sex='famle')
8、默认参数需要注意的问题
问题一:默认参数必须放在位置参数之后
def foo(y=1,x): print(x,y) foo(1)
#语法错误
问题二:默认参数只在定义阶段赋值一次,而且仅一次
x=100 def foo(a,b=x): print(a,b) x=123 foo('hello')
问题三:默认参数的值应该定义成不可变类型
www.sysgit.com