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')

  问题三:默认参数的值应该定义成不可变类型

 

posted @ 2017-08-04 10:09  sysgit  阅读(135)  评论(0编辑  收藏  举报